Java 使用while或do while循环查找闰年

Java 使用while或do while循环查找闰年,java,Java,我有一个任务,要求人们输入一个代码,看看这是否是闰年。无论结果如何,它都会询问患者是否愿意尝试新的输入。如果对方回答是,它会要求你进入新的一年。如果对方说“不”,它会通过打印“再见”来结束代码 唯一的要求是使用while或do-while循环。我被卡住了 import java.util.Scanner; public class homework7 { public static void main(String[] args) { Scanner scan = n

我有一个任务,要求人们输入一个代码,看看这是否是闰年。无论结果如何,它都会询问患者是否愿意尝试新的输入。如果对方回答是,它会要求你进入新的一年。如果对方说“不”,它会通过打印“再见”来结束代码

唯一的要求是使用while或do-while循环。我被卡住了

import java.util.Scanner;

public class homework7 {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter a year: ");
        int year = scan.nextInt();
        //while (yes==1) {
        do {
             /**System.out.print("Enter a year: "); //prompting the user to enter information
             int year = scan.nextInt();*/


             if (year % 4==0) {
                 System.out.println(year + " is a leap year"); 

                 System.out.println("Would you like to check another year? Enter 1 for yes, 0 for no");
                 int yes = scan.nextInt();
                 
                

             }
             else {
                 System.out.println(year + " is not a leap year");
             }
        }
        
        while(year % 4==0); 

    }

}


注:最重要的是,我一直在思考如何再次运行循环,因为我能够确定这是否是闰年,但当被要求继续时,我不知道如何再次运行输入并向用户请求新的一年

试试这个。你的逻辑是错误的。试着比较和理解
如果while循环依赖于用户输入(1或0),那么为什么要检查年份%4==0?
一些提示: 第一:可视化代码并绘制流程图。不要只是阅读问题并编写代码。思考,想象,然后写

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int yes=1;
    
    while(yes == 1){
        System.out.println("Enter a year: ");
        int year = scan.nextInt();
        if (year % 4==0) {

             if( year % 100 == 0){

               // year is divisible by 400, hence the year is a leap year
               if ( year % 400 == 0)
                   System.out.println(year + " is a leap year"); 
               else
                   System.out.println(year + " is not a leap year"); 
             }
             else{
                   System.out.println(year + " is a leap year");   
             }
        else {
             System.out.println(year + " is not a leap year");
        }

         System.out.println("Would you like to check another year? Enter 1 for yes, 0 for no");
         yes = scan.nextInt(); //IF USER ENTERS ANY OTHER NUMBER OTHER THAN 0 & 1, IT WILL STILL EXIT. Leaving upto you
    } 

}

闰年需要以下条件:
year%4==0&&(year%100==0&&year%400==0)


听说你被困了,我很难过,但如果你不告诉我们你被困在哪里,就很难帮助你。你需要自己做一些挖掘工作,弄清楚你到底需要什么帮助,然后问一下。如果我们只是为您编写程序,您将不会学到任何新概念,然后您将更加难以完成下一个作业。我们被告知只需使用一个简单的(数字%4==0)要知道这是否是闰年。最重要的是,我一直在思考如何再次运行循环,因为我能够知道这是否是闰年,但当被要求继续时,我不确定如何再次运行输入并向用户请求新的一年!您向用户提问并在变量
yes
中捕获响应,然后从不将其用于任何用途。作为一个用户,我会对你的程序忽略我的响应感到非常生气。至于闰年检查,检查闰年的完整逻辑是这样的
((year%400==0)| |(year%4==0&&year%100!=0))
非常感谢!我知道哪里出了问题,将while循环更改为do-while循环是否允许我发出一条消息,用类似于
System.out.println(“祝您玩得愉快!”)的内容提示用户退出编辑:我想出来了,我设法在最后添加了一个简单的
if(yes==0)
,它解决了我的问题。1900、2100不是闰年布尔值,读取Y/Y vs N/N,可能是更好/更主流的方法。另外,正如@RajeevRanjan所指出的,闰年不是每四年一次,而是每四年一次,除了每一百年一次,其中的年份/100不能被4整除,实际上是97/400年。@RajeevRanjan修正了它。实际上,我把注意力集中在他的while逻辑上,把leap登录留给了他。不管怎么说,修改了它。@AharonK修复了它。实际上,我把注意力集中在他的while逻辑上,把leap登录留给了他。不管怎样,修改了它。
Scanner scan = new Scanner(System.in);
int year = -1;

while (year != 0) {
    System.out.println("Enter a year or 0 to end: ");
    year = scan.nextInt();

    if (year != 0) {
        if (year % 4 == 0 && (year % 100 == 0 && year % 400 == 0)) {
            System.out.println(year + " is a leap year");
        } else {
            System.out.println(year + " is not a leap year");
        }
    }
}