class Noob1 {
public static void main(String args[])
throws java.io.IOException{
char ch, answer;
answer = 'g';
do {
System.out.println("Guess from A-L:");
ch = (char) System.in.read();
if(ch == answer){
System.out.println("Congratz!");
} else System.out.println("Try again!");
} while (ch != answer);
}
}
Der Ausgang ist dies:Java do-while-Schleife Konsole Eingang Überspringen
Guess from A-L:
a
Try again!
Guess from A-L:
Try again! // this is where intuitively it should ask for input again
Guess from A-L:
Try again!
Guess from A-L:
g // input is skipped a few times
Congratz!
ich nicht, warum herausfinden können, ich ein Buch für Anfänger und alles lesen, sollten abgedeckt habe, was ich Ich vermisse?
Das Hinzufügen des unten stehenden Codes am Ende der Schleife bestätigt, dass es geloopt wird, aber die Eingabe wird irgendwie übersprungen.
i++;
System.out.println(i);
Also habe ich es funktioniert dies mit:
import java.io.*;
class Noob1
{
public static void main(String args[]) throws java.io.IOException
{
char ch, answer;
String tmp;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
answer = 'g';
do
{
System.out.println("Guess character followed by ENTER:");
tmp = bufferedReader.readLine();
ch = tmp.charAt(0); // only first char is considered
if (ch == answer)
System.out.println("Gratz! the answer was: " + ch + "!");
else
System.out.println("Nope, try again..");
} while (ch != answer);
}
}
Ist die Formatierung noch schrecklich?
Es empfiehlt sich, sich von Anfang an für konsistente Einrückungen und Verstrebungen zu entscheiden. Der Code in der Frage könnte eine Bereinigung verwenden. –
@Tunaki: Das OP verwendet nicht 'Scanner'. Aber es kann durchaus noch eine frühere Version dieser Frage geben, die 'System.in' direkt verwendet. –
@ T.J.Crowder Sie haben Recht ... albern mich. Danke, dass du darauf hingewiesen hast. Dies wäre angemessener http://StackOverflow.com/Questions/27239265/whats-wrong-with-for-loop oder http://StackOverflow.com/Questions/15296637/System-In-Read-Miss-Execution – Tunaki