我是Java编程的新手,我试图了解Scanner类中可用的不同方法,我来到了 hasNextInt(); 方法,该方法是否有任何默认值,或者为true或false,因为在代码中,第一个编译器打印“输入您的出生年份:” ,然后编译器移至下一行,即 boolean hasNextInt = Scanner.hasNextInt(); ,这时由于没有输入,编译器将做什么?
此代码运行良好,例如,如果我给yearOfBirth输入了无效的输入,例如“ abc” ,它会显示“无法解析出生年份”。当我提供有效的整数输入时,它也可以正常工作。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter your year of birth:");
boolean hasNextInt = scanner.hasNextInt();
if(hasNextInt) {
int yearOfBirth = scanner.nextInt();
scanner.nextLine(); // handle next line character (enter key)
System.out.println("Enter your name: ");
String name = scanner.nextLine();
int age = 2018 - yearOfBirth;
if(age >= 0 && age <= 100) {
System.out.println("Your name is " + name + ", and you are " + age + " years old.");
} else {
System.out.println("Invalid year of birth");
}
} else {
System.out.println("Unable to parse year of birth.");
}
scanner.close();
}
答案 0 :(得分:2)
引用Javadoc:
hasNext和next方法都可能阻塞等待进一步的输入。 hasNext方法是否阻塞与其关联的next方法是否将阻塞无关。
换句话说,hasNextInt
方法将在必要时阻塞(等待),直到收到输入为止。