如何确保输入是Java上带有hasNextInt的整数

如何确保输入是Java上带有hasNextInt的整数,java,input,Java,Input,新来的程序员。这可能是一个非常基本的问题,但它仍然困扰着我。 当我尝试在Eclipse上运行此代码时,什么都没有发生。我在检查闰年。输入必须是整数,如果不是,我希望继续重复循环(我试图通过input.hasNextIntpart实现这一点)。但是,当我尝试运行它时,没有任何弹出窗口,控制台仍然是空的 有人知道这里出了什么问题吗 import java.util.Scanner; public class Leapyear { public static void main(Strin

新来的程序员。这可能是一个非常基本的问题,但它仍然困扰着我。 当我尝试在Eclipse上运行此代码时,什么都没有发生。我在检查闰年。输入必须是整数,如果不是,我希望继续重复循环(我试图通过
input.hasNextInt
part实现这一点)。但是,当我尝试运行它时,没有任何弹出窗口,控制台仍然是空的

有人知道这里出了什么问题吗

import java.util.Scanner;

public class Leapyear {

    public static void main(String[] args)
    {
        int year;
        Scanner input = new Scanner(System.in);

        while (!input.hasNextInt()) {
            System.out.println("Enter a year in numbers:");
        input.next();  
        }

        year = input.nextInt();
        System.out.println("Enter a year:");

        input.close();


        boolean is_leap = false;

        if (year % 4 == 0)
        {
            if (year % 100 == 0)
            {
                if (year % 400 == 0)
                    is_leap = true;
                else
                    is_leap = false;
            }
            else
                is_leap = true;
        }   
        else
            is_leap = false;

        if(is_leap)
            System.out.println(year + " is a leap year!");
        else
            System.out.println(year + " is not leap year!");

    }

}

实际上,您需要打印一次消息才能在控制台中看到它,否则,消息将仅在执行while循环时显示

public static void main(String[] args) {
    int year;
    System.out.println("Enter a year in numbers:");
    Scanner input = new Scanner(System.in);

    while (!input.hasNextInt()) {
        System.out.println("Enter a year in numbers:");
        input.next();
    }

    year = input.nextInt();
    //System.out.println("Enter a year:");

    input.close();


    boolean is_leap = false;

    if (year % 4 == 0)
    {
        if (year % 100 == 0)
        {
            if (year % 400 == 0)
                is_leap = true;
            else
                is_leap = false;
        }
        else
            is_leap = true;
    }
    else
        is_leap = false;

    if(is_leap)
        System.out.println(year + " is a leap year!");
    else
        System.out.println(year + " is not leap year!");

}

hasnetint
是一个阻塞调用,正在等待用户输入。不,它不是…
year=input.nextInt()需要在调用下一个int之前写入。只需在while循环之前打印一些内容。