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。
再次感谢!
答案 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
}