我似乎经常遇到这个问题,我似乎不太了解如何使用扫描仪
System.out.println("Please enter a number");
Scanner choice1 = new Scanner(System.in);
int choiceH = choice1.nextInt();
while(!choice1.hasNextInt()){
System.out.println("Please enter a number");
choice1.next();
}
我要代码执行的操作是要求输入一个数字,然后检查输入是否为数字。
我的问题是它来回询问两次,我不知道为什么。
最佳答案
在行中
Scanner choice1 = new Scanner(System.in);
缓冲区将为空。当你到达那条线
int choiceH = choice1.nextInt();
您输入数字,然后按Enter。此后,该编号将存储在缓冲区中并被使用(缓冲区将再次为空)。当你到达那条线
while (!choice1.hasNextInt())
程序将检查缓冲区中是否有
int
,但此刻它将为空,因此hasNextInt
将返回false
。因此,条件将为true
,程序将再次要求输入int
。你怎么解决呢?您可以删除第一个
nextInt
:System.out.println("Please enter a number");
Scanner choice1 = new Scanner(System.in);
int choiceH = -1; // some default value
while (!choice1.hasNextInt()) {
System.out.println("Please enter a number");
choice1.nextInt();
}