Datentypen Ein String in ein Char und ein Double wandeln

Showtimeric

Neues Mitglied
Hallo,

Ich habe eine Aufgabe bekommen und hab das Problem. Ich habe ein String (eingabeString) der durch einen Scanner (eingabe) vom Benutzer eingegeben wird. Dieser String soll ein Char (zeichen) (+,-,/,*) enthalten dann kommt ein Leerzeichen und dann eine Kommazahl (wert). Nun kann ich die beiden Dinge wie folgt auslesen.
Java:
		eingabeString = eingabe.nextLine();
			zeichen = eingabeString.charAt(0);
			eingabe = new Scanner(eingabeString.substring(1));
			wert = eingabe.nextDouble();

Wenn ich jetzt aber eine While-Schleife, dass Gebilde mache, dann Wiederholt er diese Schleife nicht. Wenn ich die Zeile "eingabe = new Scanner(eingabeString.substring(1));" entferne und denn double per wert = eingabe.nextdouble(); einlese funktiniert die Schleife.

Die Eingabe in einem String ist die Vorgabe von meinem Lehrer. Das einlesen hat er uns in einem Beispiel gezeigt. Mach ich etwas falsch? Oder gibt es eine andere Möglichkeit den Teilstring in ein Double zu wandeln. Ich finde leider nichts was mich weiter bringt.

Die While-Schleife sieht wie folgt aus:
Java:
while (eingabe.hastNext())
{
...
}

Es soll ein einfacher Taschenrechner in der Konsole werden.

Über einen Tipp würde ich mich sehr freuen.
 
du sparst dir die Information, aber man kann wohl herauslesen, dass eingabe am Anfang der Scanner auf System.in ist?

wenn du dann eingabe auf den String setzt, dann wird danach offensichtlich nichts mehr aus System.in gelesen,
Verbindung gekappt quasi,

einen weiteren neuen Scanner zu setzen, in jedem Schleifendurchlauf, wäre mehr oder weniger denkbar,
aber nicht zu empfehlen, lasse den System.in-Scanner unberührt,
verwende für den eingabeString.substring(1)-Scanner eine zweite Variable, lokal in der Schleife

oder verwende, wie du auch fragst, z.B. Double.parseDouble()
 
Vielen Dank!

Du hast vollkommen recht!

Habe es nun so:

Java:
		eingabeS = eingabe.nextLine();
			zeichen = eingabeS.charAt(0);
			wertS = eingabeS.substring(2);
			wert = Double.parseDouble(wertS);

Also meinst du ich soll das nächste mal lieber den ganzen Code posten? Werde ich mir merken... :rtfm:

Vielen dank für die schnelle Hilfe.
 

Zurück
Oben