我尝试了两种方法。两者都没有效果,我真的很想知道为什么。
display(text)
只是System.out.println(text)
public int getMove() {
int move = -2;
display("It's your turn, pick a row [0-6] or [-1] for a hint: ");
Scanner in = new Scanner(System.in);
do {
if (in.hasNextInt()) {
move = in.nextInt();
}
if (move == -1) {
display("How much time can I use?");
move = -3;
do {
if (in.hasNextInt()) {
move = in.nextInt();
}
} while (move == -3);
in.close();
return -1 * move;
}
} while (move < -1);
in.close();
return move;
}
此代码不接受任何输入(例如,当我输入5
时,它不会退出do-while循环。)
当我改变时
if (in.hasNextInt()) {
move = in.nextInt();
}
为:
move = in.nextInt();
它会抛出java.util.NoSuchElementException
。
为什么会这样?
答案 0 :(得分:1)
这将跳过读取任何非整数
的内容 if (in.hasNextInt()) {
move = in.nextInt();
}
所以当你输入&#34; abcd&#34;它将永远留在缓冲区。
在循环结束时添加in.nextLine()
到&#34;跳过&#34;输入无效。