该程序应检查输入的年份是否为闰年。但是我在编译时遇到了错误。 检查闰年是否为闰年的公式如下:
如果你可以把年份除以4,那就是闰年...
除非你可以同时将它除以100,否则它不是a 闰年...
除非你能同时将其除以400,否则它是一个飞跃 年。
public class Schaltjahr {
public static void main (String[] args) {
double d;
String eingabe;
eingabe = JOptionPane.showInputDialog("Gib das Jahr ein "); //Type in the year
d = Double.parseDouble(eingabe);
if ((d % 4 == 0) & (d % 100 == 0) && (d % 400 = 0) ) {
JOptionPane.showMessageDialog(null,"Es ist ein Schaltjahr"); //It is a leap year
} else {
if ((d % 4 == 0) & (d % 100 == 0) )) {
JOptionPane.showMessageDialog(null, "Es ist kein Schaltjahr"); //It is not a leap year
}
} else {
if (d % 4 == 0) {
JOptionPane.showMessageDialog(null, "Es ist ein Schaltjahr"); // It is a leap year
}
}
}
}
编译时我收到此错误:
Schaltjahr.java:16: error: illegal start of expression
if ((d % 4 == 0) & (d % 100 == 0) )) {
^
Schaltjahr.java:19: error: 'else' without 'if'
} else {
^
2 errors
答案 0 :(得分:4)
为什么不放一个单一条件:
if ((d % 4 == 0) && (d % 100 != 0) || (d % 400 == 0)) {
JOptionPane.showMessageDialog(null,"Es ist ein Schaltjahr"); //It is a leap year
else
JOptionPane.showMessageDialog(null, "Es ist kein Schaltjahr"); //It is not a leap year
如果
,一年是跳跃it divides on 4 AND NOT on 100 OR divides on 400
示例:
2016 - leap (divides on 4 and not on 100)
2000 - leap (divides on 400)
1900 - not leap (divides on 4, but on 100 as well)
2015 - not leap (doesn't divide on 4, doesn't divide on 400)
你甚至可以把它作为
JOptionPane.showMessageDialog(null, ((d % 4 == 0) && (d % 100 != 0) || (d % 400 == 0))
? "Es ist ein Schaltjahr"
: "Es ist kein Schaltjahr");
但我猜它不太可读。
答案 1 :(得分:3)
您有两个连续的else
语句,这些语句无法编译。
变换:
} else {
if ((d % 4 == 0) & (d % 100 == 0) )) {
......进入......
} else if ((d % 4 == 0) & (d % 100 == 0) )) {
答案 2 :(得分:0)
检查闰年的单一if语句是: -
if((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0)))