2014-10-13 8 views
-2

Я создаю объект сканера, чтобы получить год и проверить, является ли это високосным годом. Просто хочу получить обратную связь. Это правильно, что у меня есть? Спасибо!Калькулятор Java Leap Year

import java.util.Scanner; 
public class Micro4 
{ 
    public static void main(String[] args) 
    { 

    Scanner input = new Scanner(System.in); 

    int testDate = input.nextInt(); 

    boolean divFour = (((testDate % 4) == 0)); 
    boolean divHundred = (((testDate % 100) != 0)); 
    boolean divFourHundred = (((testDate % 400) != 0)); 

    if (divFour && divHundred && divFourHundred) { 
     System.out.println(testDate + " is a leap year."); 
    } else { 
     System.out.println(testDate + " is not a leap year."); 
    } 
    } 
} 
+0

Вы можете добавить точную ошибку вы получаете – Ram

+0

Просто позвоните [ 'java.time.Year.isLeap'] (http://docs.oracle.com/javase/8/docs/api/java/ время/Year.html # isLeap-долго-). –

+0

Крис, это очень ясно, чему поучиться. Конечно, есть встроенные методы, чтобы делать такие вещи, но тогда Рафаэль не научился решать проблему. Что касается вас, Шрикант, прочитайте сообщение Рафаэля - он просит простой обратной связи, а не исправлять ошибку. –

ответ

0

Логика немного неправильная. 2000 - високосный год, но это не соответствует вашей программе. Правильная логика должна была:

if ((divFour && divHundred)||!divFourHundred) { 

Кроме того, как предложил Дэйв Гальвин, не лучше использовать имена переменных для улучшения читаемости.

0

Хитрость заключается в том, чтобы поместить это в код:

год является високосным, если он делится на 4, но годы века не високосные годы, если они не делятся на 400.

Я проверяю, если (год кратен 4 и не кратен 100) ИЛИ (год кратен 400).

if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) 
    System.out.println("Leap"); 

else 
    System.out.println("Not leap."); 
Смежные вопросы