2016-10-31 4 views
0
import java.util.*; 

public class LeapYear { 

    public static void main (String args[]) { 

     Scanner scan = new Scanner(System.in); 
     int userInput = scan.nextInt(); 
     boolean leapYearisTrue = false; 

     while (userInput != 0) { 
      if (userInput % 4 == 0) { 
       if ((userInput % 100 == 0) && (userInput % 400 != 0)) { 
        leapYearisTrue = false; 
        System.out.println (leapYearisTrue); 
       } 
       else { 
        leapYearisTrue = true; 
        System.out.println (leapYearisTrue); 
       } 
       userInput = scan.nextInt(); 
      } 
     } 
    } 
} 

Всякий раз, когда я ввести значение, високосный год, программа проходит гладко и делает то, что он должен:Leaper если выражение неисправна

2000 
true 
1960 
true 
400 
true 

, но всякий раз, когда я вводить не високосный год, он не печатает ложь и больше не будет печатать, что число високосный год:

403 
400 
2000 (this is a leap year , yet it doesn't print true) 
2004 
+0

У вас не хватает Условный ..else состояние – Venkat

ответ

2

Вы должны добавить else условие if (userInput % 4 == 0) состояния.

+0

работал как шарм, ты бог. Я отвечу вам через 5 минут. –

1

Попробуйте это:

import java.util.*; 

public class LeapYear { 

    public static void main(String args[]) { 

     System.out.println("Enter the year: \n");  
     Scanner scan = new Scanner(System.in); 
     int userInput = scan.nextInt(); 
     boolean leapYearisTrue = false; 

     while (userInput != 0) { 
      if (userInput % 4 == 0) { 
       if (userInput % 100 == 0) { 
        if (userInput % 400 != 0) { 
         leapYearisTrue = true; 
         System.out.println(leapYearisTrue); 
        } 
       } else { 
        leapYearisTrue = true; 
        System.out.println(leapYearisTrue); 
       } 
       userInput = scan.nextInt(); 
      } 
     } 
    } 
}