Wie kann man bei Java ein Integer in einzelne ziffern runterbrechen und jede ziffer in einem eigenen Feld in einem array speichern?
Hallihallo,
ich soll ein programm schreiben, bei dem eine 8 stellige zahl eingelesen wid, die nur aus 4 ziffern besteht und jede ziffer entspricht einem zeichen anschließend soll mein programm die ziffern in die entsprechenden zeichen umwandeln und in die ausgabe schreiben. meine idee war ein array anzulegen, dass 8 felder besitzt und dann quasi für jedes feld zu prüfen welchem zeichen es entspricht ...
wie liest man also eine ganze zahl ein, bricht sie dann in ziffern herunter und speichert jede einzelne zahl in einem array feld?
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);
}