是否具有hasNextInt(); java中的方法是否具有默认值?

时间:2018-12-30 19:41:44

标签: java

我是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();
}

1 个答案:

答案 0 :(得分:2)

引用Javadoc

  

hasNext和next方法都可能阻塞等待进一步的输入。 hasNext方法是否阻塞与其关联的next方法是否将阻塞无关。

换句话说,hasNextInt方法将在必要时阻塞(等待),直到收到输入为止。