我有这样的东西:
Scanner in=new Scanner(System.in);
int rounds = 0;
while (rounds < 1 || rounds > 3) {
System.out.print("How many rounds? ");
if (in.hasNextInt()) {
rounds = in.nextInt();
} else {
System.out.println("Invalid input. Please try again.");
System.out.println();
}
// Clear buffer
}
System.out.print(rounds+" rounds.");
如何清除缓冲区?
编辑:我尝试了以下方法,但由于某些原因不起作用:
while(in.hasNext())
in.next();
发布于 2012-05-15 23:39:37
您不能显式地清除Scanner的缓冲区。在内部,它可能会在读取令牌后清除缓冲区,但这是编程者无法实现的细节。
发布于 2012-05-15 23:38:17
试试这个:
in.nextLine();
这将使扫描仪前进到下一行。
发布于 2014-08-28 15:35:50
使用以下命令:
in.nextLine();
紧随其后
System.out.println("Invalid input. Please Try Again.");
System.out.println();
或者在下面的花括号后面(你对它的评论是)。
该命令使扫描程序前进到下一行(当从文件或字符串读取时,它只是读取下一行),因此在本例中实质上是刷新它。它将清除缓冲区,并为新输入准备好扫描仪。优选地,当用户输入了无效的输入(例如要求输入数字时的字母)时,它可以用于清除当前缓冲器。
该方法的文档可以在以下位置找到:http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextLine()
希望这能有所帮助!
https://stackoverflow.com/questions/10604125
复制相似问题