[Java] Int einlesen und als Int[] speichern

SirElectro

Ensign
Registriert
Jan. 2010
Beiträge
136
Hallo,

ich würde gern eine Int mittels Scanner einlesen und jedes einzelne Zeichen in ein Int Array speichern.
Also z.B. 1234 --> [1] , [2] , [3] ,[4]


Wie geht das am einfachsten?
 
Spontan:

int Array[]
Array = das zeig was du eingelesen hast

Oder wo genau ist das Problem?

edit:

Ne quatsch besser wäre es so irgendwie:

ArrayList<int> array = new ArrayList();
array.add(dein eingelesenes zeug)

es gibt noch natürlich LinkedList
 
Zuletzt bearbeitet:
Ich will nicht die ganze Zahl in ein Array packen , sondern jede Ziffer der Zahl einzeln an eine Stelle des Arrays.
 
Zeig doch mal den Code, den Du bisher geschrieben hast! Das Einlesen funktioniert bereits?
 
Hi!

Dazu fällt mir spontan ein:

String tmp = Integer.toString(zahl);
int len = tmp.length();

for(int i=0;i<len;i++)
{
array = tmp.charAt(i);
}

unter umständen musst du die reihenfolge umkehren wenn dir das so nicht passt!

Ist nicht besonders schnell, da man den Umweg über String geht, mit Integerdivisionen muss man aber bissl mehr nachdenken ;)

Flip
 
soares schrieb:
Zeig doch mal den Code, den Du bisher geschrieben hast! Das Einlesen funktioniert bereits?

Naja eingelesen wird die Zahl mit
int node=scanner.nextInt();

Das funktioniert auch wunderbar. Aber ich muss dann später jede Ziffer dieser Zahl mit einer anderen vergleichen, deshalb wollte ich jede Ziffer in einer seperaten Stelle eines Arrays stehen haben.



@MrFlip0815 so hatte ich es anfangs, ich wollte aber den Umweg über Strings umgehen..
 
int arraysize = 0;
int zahl = input;

while (zahl > 0)
{
arraysize++;
zahl = zahl / 10;
}

int zahlarray[] = new zahlarray[arraysize];

for (int i = 0; i < arraysize; i++)
{
zahlarray = input/pow(10, (arraysize-1) - i));
}

//Irgendwieso hätte ich es schnell gemacht; Nicht getestet und wunderbares Denglisch ...
 
Zuletzt bearbeitet:
Möchtest du jetzt jede Ziffer in einem eigenen Array haben oder einfach die Ziffern jedes Inputs in einem Array, sprich so: [1,2,3,4] ?
 
Und Du hast so überhaupt keine Idee, wie man eine Zahl in die einzelnen Ziffern zerlegen kann? Bei solchen Übungsaufgaben die Lösung zu verraten, ist immer irgendwie sinnfrei...
 
Naja wie auch immer, wenn du das ganze in einem Array haben möchtest, dann vielleicht so:

public static int[] IntegerToOneArray(int stream){

int stelligkeit = Stelligkeit(stream);
int [] array = new int [stelligkeit];

for(int i=0; i< stelligkeit; i++){
array = stream%10;
stream = stream/10;
}

return array;
}

So hast du die Zahl in ein Array zerlegt. Allerdings stimmt die Reihenfolge dann noch nicht, dazu kannst du das Array reversieren:

public static int[] reverseArray (int[] a){

int [] temp = new int[a.length];

for(int i = 0, j = a.length-1; i < a.length; i++,j--){
temp= a[j];

}

return temp;
}

Ahja und die Stelligkeit sagt einfach aus wieviel Stellen deine input Zahl besteht:

public static int Stelligkeit (int a){

int n = a;
if ((n/10) == 0){
return 1;
} else {
return Stelligkeit(n/10) + 1;

}
}

Das wäre so mein Ansatz mit Modulo und normaler Division. Wie du das nun letzendlich abgesoreichert haben möchtest, ob in einm Array oder für jede Ziffer ein eigenes Array ist dir überlassen....

Viele Grüße
YinYang
 
Also mein Vorschlag ist auch falsch, da du wirklich ein Array Element pro Int haben möchtest;
Aber ich versteh den Sinn nicht ganz; Was bringt es dir einen Wert in einem 1x1 Array zu halten?
 
o.O einfach druch 1 teiln wennn das funktioniert durch 10 usw..
sobald die zahl auf unter 1 droped hast die anzahl der elemente im array und kannst sie von oben her nach hinten wieder auflösen fertig...
so einfach ist dass -.-
so und ich bin dafür das dir hier keiner mehr hilft und du deinen code selbst schreiben musst !!!
 
Zurück
Oben