我有一个计算leap年的程序,但是,它只能在1750年左右才能使用,因此我希望我的用户只能输入1750年以后的数字。

System.out.println("Enter a year after 1750:");
    leapYear = in.nextInt();

    if(leapYear<1750){
        System.out.println("You have entered a year before 1750, please try again :");
        leapYear  = in.nextInt();
    }


我的解决方案是放置一个if语句。但是,我意识到,只有在用户输入低于1750的值时,这才起作用。如果他们再次这样做,程序将继续运行。有没有一种方法可以执行我多次需要执行的语句“您已输入1750年之前的年份,请重试:”,而无需重写它。

我在想也许一个while语句可以工作(如果一个while语句可以工作,我怎么做而不引起无限循环)?

最佳答案

使用while语句可以使您处在正确的轨道上。使其无限执行非常简单。用户输入正确的年份后,循环条件将评估为false并退出。

System.out.println("Enter a year after 1750:");
leapYear = in.nextInt();

while(leapYear < 1750){
     System.out.println("You have entered a year before 1750, please try again :");
     leapYear  = in.nextInt();
}


您也可以尝试使用do-while循环来减少重复的代码:

do{
    System.out.println("Please enter a year after 1750:");
    leapYear = in.nextInt();
}while(leapYear < 1750);


仅会提示用户输入1750年之后的年份,这需要输入错误消息。

09-11 18:02