闰年计划

时间:2014-10-01 01:24:24

标签: java leap-year

import java.util.*;
public class LeapYear
{
    public static void main (String[]args)
    {
        Scanner scan= new Scanner (System.in);
        System.out.println("Please enter in the year");
        int year=scan.nextInt();
        if (year % 4 ==0)
        {
            { 
                if (year % 100 ==0);
                else 
                    System.out.println("The year,"+year+",is a leap year!");
            }
            if(year % 400==0)
                System.out.println("The year, "+year+",is a leap year!");
        }
        else
            System.out.println("The year, "+year+",is not a leap year!");
    }
}
嘿大家好!上面是我的闰年程序代码 - 似乎运行良好,除非我输入3000或300之类的数字,JVM就会停止并关闭终端窗口。有人可以指导为什么它不接受这些数字(另外,请原谅我,我的代码格式不正确 - 我是新的,并尽力做到最好) 注意:当我测试1900年,1996年,2004年,164年和204年时,它显示所有正确的答案。它根本不接受300或3000。 再次感谢!

3 个答案:

答案 0 :(得分:3)

检查以下几行:

if (year % 100 ==0);
else 

300%100 == 0,没有输出。

答案 1 :(得分:1)

如果您这样做,您可以使代码更简洁:

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

另外,请注意,这个计算闰年的公式仅适用于“1583”之后的年份。

答案 2 :(得分:1)

您问我们原谅您的格式,但是您的格式会导致您错过这个问题。特别是当你刚开始时,如果你非常勤奋地格式化,你会发现最有用的是了解发生了什么。建议:总是包括括号,即使它们是可选的,并且始终提供每个'if'语句的'else'部分。因此:

if (condition) {
    action;
} else {
    alternative action;
}

在您的情况下,您将在第11行和第12行中看到您具有语法正确的代码,但很可能不是您的意思。第11行的开口支架似乎不合适,第12行末尾的分号只是取代了那种条件为真的“动作”。

if ((year % 4) == 0) {
    // could be a leap year
    if ((year % 100) == 0) {
        // could be a leap year too
        if ((year % 400) == 0) {
            println("yes, this is a leap year ... divisible by 4, 100, AND 400");
        } else {
            // not a leap year ... divisible by 4 and 100, but NOT 400
        }
    } else {
        println("yes, this is a leap year ... it's divisible by 4 but not 100");
    }
} else {
    // absolutely not a leap year
}