2017-05-29 3 views
0

Ich versuche, eine einfache Aufgabe von einem Kurs zu lösen, den ich eingeschrieben habe, aber es funktioniert nicht aus irgendeinem Grund.Java einfache Zuordnung

Zuordnung sagt: "Ein Jahr ein Schaltjahr ist, wenn es durch 4 teilbar ist, aber wenn das Jahr durch 100 teilbar ist, ist es nur ein Schaltjahr, wenn es auch eine teilbar ist durch 400 erstellen Programm, das das gegebene Jahr ist ein Schaltjahr überprüft, ob

Wenn ich den Code ich die Meldung ausführen:“. Mit Eingang 1604 Sie sollten „das Jahr ist ein Schaltjahr“ drucken, aber sie gedruckt "Geben Sie ein Jahr ein: Das Jahr ist kein Schaltjahr." "

mein Code 210

Dies ist:

Scanner reader = new Scanner(System.in); 
    System.out.print("Type a year: "); 
    int year = Integer.parseInt(reader.nextLine()); 

    if((year % 4 == 0) && (year % 100 == 0 && year % 400 == 0)) { 
     System.out.println("The year is a leap year."); 
    }else { 
     System.out.println("The year is not a leap year."); 
    } 
} 

}

+0

Verwenden Sie einen Debugger, um die Werte von 'Jahr% 4',' Jahr% 100' und 'Jahr% 400' zu sehen. –

+1

Denk nur mal darüber nach, was bei der Eingabe 4 passiert, ist es ein Schaltjahr, was gibt der Code aus? Beginne nicht mit merkwürdigen Fällen wie 1604, beginne mit den einfachen und überprüfe, warum auch sie schon scheitern. – luk2302

+0

Sind Sie sicher, dass Ihr Programm "' Type a year: "' '? –

Antwort

1

if((year % 4 == 0) && (year % 100 == 0 && year % 400 == 0) verwendet && es || sein sollte. Es sollte if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)

1604 ist teilbar durch 4, aber seit Sie && verwenden, überprüft es auch, ob es teilbar durch 100 und 400, die es nicht ist.

+1

wo sollte es '||' sein? – luk2302

+0

meine Aussage bearbeitet. – TGKL

+1

'(Jahr% 100 == 0 && Jahr% 400 == 0)' ist überflüssig, weil 'Jahr% 100 == 0 'gilt, wenn' Jahr% 400 == 0'. Und diese allgemeine Bedingung wird sagen, dass 1900 ein Schaltjahr ist, was es nicht ist. Das ist also falsch. –