有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

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!");

    }

}

共 (1) 个答案

  1. # 1 楼答案

    实际上,您需要打印一次消息才能在控制台中看到它,否则,只有在执行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!");
    
    }