Ich scanne eine Argumentdatei mit einem Schalter Fall in eine Stack
und es überspringt Werte mit einem .nextDouble
Befehl?Java Scanner nextDouble-Befehl überspringt Werte mit Switch Case?
Hier ist mein Code-Fragment:
while (stackScanner.hasNextLine()) {
switch(stackScanner.next()) {
case"+": {
operator= new operationNode("+");
stack.push(operator);}
case"-":{
operator= new operationNode("-");
stack.push(operator);}
case"*":{
operator= new operationNode("*");
stack.push(operator);}
case"/":{
operator= new operationNode("/");
stack.push(operator);}
case"^":{
operator= new operationNode("^");
stack.push(operator);}
while(stackScanner.hasNextDouble()) {
stack.push(new numberNode(stackScanner.nextDouble()));
}
}
Das Problem in diesem letzten Zeile ist hier, wo das Argument Datei folgendes enthält: ^ 2 - 3/2 6 * 8 + 2.5 3
Doch der Scanner nur sammelt: ^ 2 - 3/6 * 8 + 3
.
So überspringt es die ersten Zahlen, die in einem Paar kommen (2 und 2.5).
Sache ist, wenn ich stackScanner.next();
am Ende der while-Schleife hinzufügen, die nur Zahlen, dass es speichert die Werte 2 und 2,5 sind?
Haben Sie bemerkt, dass Sie keine Pause in Ihren Fällen haben, und dass Ihre while-Schleife in der switch-Anweisung ist? –
@MauricePerry Ich hatte es als Standard: aber es wurde nicht bestimmte Werte gelesen. Auch Pausen scheinen mein Ergebnis nicht zu beeinflussen (?) – Gege
Sind Sie sicher, dass Sie den richtigen Code gepostet haben? Wenn ich es kopiere und einfüge, sehe ich nicht die Ergebnisse, die du sagst. Insbesondere sieht mein Stack so aus: '[^, 2.0, -, *, /, ^, 3.0, /, ^, 2.0, 6.0, *, /, ^, 8.0, +, -, *, /, ^, 2.5, 3.0] ', was im Einklang mit der Beobachtung von MauricePerry steht, dass" Break "-Sätze fehlen. – DaveyDaveDave