Wie kann man bei Java ein Integer in einzelne ziffern runterbrechen und jede ziffer in einem eigenen Feld in einem array speichern?

2 Antworten

Einfache mathematische Beispielrechnung:

1234 / 1000 = 1

1234 % 1000 = 234
234 / 100 = 2

234 % 100 = 34
34 / 10 = 3

34 % 10 = 4

Beachte hierbei: Wenn du zwei Ganzzahlen (Integer) miteinander dividierst, wird beim Ergebnis die Nachkommastelle hart abgeschnitten. Daher erhältst du bei den obigen Rechnungen 1, 2, 3, usw..

Die Division mit Rest lässt sich via Modulo-Operator (%) bewerkstelligen. Sie gibt den Rest zurück, der nach einem ganzzahligen Teilen bleibt.

Ich weiß leider nicht, was die Frage ist. Jedoch kann ich dir bei der Verarbeitung einer Zahl zu einem Array helfen.

Sagen wir du liest den Integer 1234567 ein. Also:

int inp = 1234567;

diese kannst du dann in einen String umwandeln.

String str1 = Integer.toString(inp);

Mit der Methode "toCharArray()" kannst du nun dieses in ein char-Array umwandeln.

char[] arr = str1.toCharArray();

Und nun kannst du auf diese zugreifen:

for (char c : arr) {

System.out.println(c);

}

Das Problem ist nun, dass das char-Array nicht aus integers, sondern aus chars besteht. Das heißt, wenn du den output 1 hast, ist das nicht der Integer 1, sondern der char '1'

wenn du nun versuchst, z.B.

int a = '1';

einzugeben, wirst du nicht den Wert 1 gespeichert haben, sondern den ASCII-Wert des Characters '1'. Hierfür, werfe mal einen Blick in die ASCII-Tabelle: https://commons.wikimedia.org/wiki/File:ASCII-Table.svg

Dort wirst du sehen, dass der char '1' den Wert 49 hat. Der würde also in dem Integer gespeichert werden. Und wie kommen wir dann von 49 zur 1?

Ganz leicht: Wir subtrahieren 48 (welches die Nummer für den Character '0' ist).

also: int a = '1' - 48; // oder halt - '0'

dann initalisieren wir ein zweites Array mit der gleichen länge des ersten Arrays

int[] cpyArr = new int[arr.length]; // arr ist das Array mit den chars

und adaptieren die Werte mithilfe einer Schleife.

for (int i = 0; i < arr.length; i++) {

cpyArr[i] = arr[i] - 48; // oder wie eben gesagt, '0'

}

und wir sind fertig.

nun kannst du auf das Array zugreifen. z.B. so:

for (int i : cpyArr) {

System.out.println(i);

}