Input/Output Problem beim einlesen eines Strings

Fbgng

Mitglied
Hallo,

ich hoffe das Thema wurde so noch nirgends behandelt, bei meiner Suche habe ich aber nichts dergleichen gefunden.

Es geht um folgendes: Ich möchte über die Konsole mehrere double Werte einlesen, die danach als Array gespeichert werden sollen. Das ganze soll als Eingabe dann etwa folgende Form haben: "3 4.2 5 8.9" was dann als Array später so aussehen soll: [3.0, 4.2, 5.0, 8.9]

Mein bisheriger Ansatz sieht wie folgt aus: Ich lese die gesamte Konsolen Eingabe ein und speichere sie als String. Diesen String zerlege ich dann an den Leerzeichen und erzeuge somit ein Stringarray. Dieses wandle ich dann in ein double Array um.

Nur scheinbar (wenn ich es mit println ausprobiere) liest der Scanner beim obigen Beispiel nur 3 ein. Wo liegt mein Fehler? Habe recht lange herum probiert, finde aber jetzt nichts..

Java:
public static void main(String[] args) {
		
		//Scanner für Eingabe wird initialisiert, Eingabe wird in String gespeichert und dann bei den Leerzeichen getrennt
		Scanner scanner = new Scanner(System.in);
		String eingabe = scanner.next();
		String[] zerlegt = eingabe.split(" ");
		
		//Stringarray zerlegt muss in Doublearray umgewandelt werden
		double[] zerlegt2 = new double[zerlegt.length];
		for(int x=0; x<(zerlegt.length - 1); x++){
			zerlegt2[x] = Double.valueOf(zerlegt[x]).doubleValue();
		}
		
		//Methodenaufruf
		
			System.out.println(eingabe);
			//System.out.println(zerlegt[1]);
			//System.out.println(zerlegt[2]);
	
		
		
		
	}

Über Hilfe würde ich mich sehr freuen :rtfm:
 
Benutze statt scanner.next() einfach scanner.nextLine() bei next() nimmt er wahrscheinlich nur den nächsten Wert (müsste somit öfters aufgerufen werden). Bei nextLine() die komplette Zeile.

Java:
String eingabe = scanner.nextLine();
 
Auch würde ich hier das length -1 weglassen, wenn du alle Eingaben im Array haben möchtest.

Java:
for(int x=0; x<(zerlegt.length - 1); x++){

sollte dan so aussehen:

Java:
for(int x=0; x<zerlegt.length; x++){
 

Zurück
Oben