这个问题困扰了我一整天,我在来回阅读讨论区的帖子,但是没有结果。有人能告诉我为什么函数aMenu()的第二次调用会返回零,而不是等待新的用户输入呢?我尝试了各种方法,比如hasNextInt()、nextLine()等,但都没有起作用。难道hasNextInt()不应该阻塞,直到用户输入吗?我该怎么解决这个问题呢?谢谢。
package FirstJavaPackage;
import java.util.Scanner;
public class testScanner
{
public static void main(String[] args)
{
int choice = aMenu();
System.out.println("You typed: "+choice);
choice = aMenu();
System.out.println("You typed: "+choice);
}
public static int aMenu()
{
int result = 0;
System.out.println("In aMenu... enter an int: ");
Scanner keyboard = new Scanner(System.in);
if (keyboard.hasNextInt())
result = keyboard.nextInt();
keyboard.close();
return result;
}
}
输出结果为:
在aMenu中... 输入一个整数: 2 你输入了:2 在aMenu中... 输入一个整数: 你输入了:0
keyboard.close()
时,它也会关闭System.in
。从那时起,无论你尝试创建任何进一步的扫描器,你都无法从System.in
中读取任何内容。 - NPE