一个if语句中的3个条件

时间:2016-05-30 15:02:52

标签: java if-statement

该程序应检查输入的年份是否为闰年。但是我在编译时遇到了错误。 检查闰年是否为闰年的公式如下:

  

如果你可以把年份除以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

3 个答案:

答案 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)))