Java int-Zahl in Ziffern zerlegen?

3 Antworten

1:

Mache eine if-Abfrage, ob die eingelesene Zahl im festgelegten Wertebereich liegt und gib eine Error-Meldung aus, wirf eine Exception, was immer du willst, wenn sie es nicht tut.

Ich weiß jetzt nicht inwiefern "lesen Sie eine Zahl im Wertebereich" andeutet, ob der Scanner das überhaupt durchgehen lassen dürfen soll, aber ich denke, hier ist es ok.

2:

Mach aus dem eingelesenen Integer einen String. (z.B. mit Integer.toString(i)) Jetzt kannst du Buchstabe für Buchstabe durchgehen, die Zahl auf der Konsole ausgeben, die einzelne Ziffer wieder in einen Integer umwandeln, um einzelne Ziffern zu bestimmen, was du willst.

Hässlich, aber würde klappen. Vielleicht kriegst du ja eine elegantere Methode raus.

Plokapier  14.01.2018, 12:18

durchgehen lassen dürfen soll

Gut gemacht, Plokapier, echt gut gemacht.

1
  1. Du könntest nach der Eingabe überprüfen, ob es sich um eine positive, ganze Zahl handelt und dahingehend entweder das Programm fortführen oder den Eingabedialog mit Fehlermeldung erneut ausgeben.
  2. In einzelne Ziffern zerlegt man mit %10 (modulo 10) und anschließender ganzzahliger Division durch 10. 15%10 ist beispielsweise 5 und 15/10 ist 1. Dann wieder von vorne, 1%10 ist 1 und so weiter und so fort. Das geht bei jeder beliebigen Zahl.

Jetzt noch implementieren, aber das sollte kein größeres Problem sein. ;-)

LG

Woher ich das weiß:Berufserfahrung – Software-Entwicklung
callj 
Fragesteller
 14.01.2018, 13:11

Alles klar habe es jetzt hiermit hinbekommen:

 while (0 != answer){    

  int ziffer = answer % 10;

  System.out.print(ziffer);

  System.out.print(" + ");

  summe = summe + ziffer;

  answer = answer/10;

   }

Nur wird jetzt ausgegeben: 5 + 4 + 3 + 2 + = 14

Wie bekomme ich es hin dass das letzte + wegfällt?

1
Willibergi  14.01.2018, 13:24
@callj

Du willst die letzte Zahl anders behandeln. Was trifft denn zu, wenn answer nur noch einstellig ist? Schlichtweg answer < 10. Also setzt Du das Plus einfach nur, wenn answer >= 10 ist.

while (0 != answer){    

  int ziffer = answer % 10;

  System.out.print(ziffer);

  if(answer >= 10) System.out.print(" + ");

  summe = summe + ziffer;

  answer = answer/10;

}
0

if(answer > 0 && answer < 10000)

Das wäre dann mal die bedingung für 1.

Und für 2. dürfte die int to string methode was für dich sein. Dann kannst du deinen string zum array machen und so die einzelnen werte bearbeiten.

Kieselsaeure  14.01.2018, 12:17

rückschliessend kannst du natürlich dann auch gleich die bestehende methode wegwerfen und mit der neuen kombinieren in dem du die aktuelle zahl wieder von string zu int konvertierst und damit rechnest. kannst aber selbstverständlich auch bei der aktuellen methode bleiben.

0
Kieselsaeure  14.01.2018, 12:20

okay zugegeben, meine methode ist nicht so elegant sondern eher "quick and dirty" :D

0
Willibergi  14.01.2018, 13:11
if(answer > 0 && answer < 10000)

Es ist weder die Rede davon, dass die Zahl maximal vierstellig sein soll, noch überprüft diese Methode die Ganzzahligkeit. Bringt also nüschte.

0
Kieselsaeure  14.01.2018, 13:26

@Willibergi die bedingung war doch 0 < answer < 10000 ..? int kann doch nur ganze zahlen abspeichern.. was gibt es da gross zu prüfen?

0