2016-04-12 15 views
-2

Hallo Leute Ich habe vor kurzem mit Java angefangen und ich wollte ein kurzes Skript erstellen, das mir sagt, ob ein Jahr ein Schaltjahr ist oder nicht. Aber jetzt gibt mein Code immer 'wahr' für den booleschen Wert zurück. Was habe ich falsch gemacht?Java: Boolean immer wieder wahr

public class Schaltjahr { 
public static void main(String[] args) { 
    int year; 
    boolean leapyear; 
    int a,b,c; 

    year = Integer.parseInt(JOptionPane.showInputDialog("Insert a year: ")); 

    a = (year % 4); 
    b = (year % 100); 
    c = (year % 400); 

    if (c == 0) { 
     leapyear = true; 
    } else { 
     if (b == 0) { 
      leapyear = false; 
     } else { 
      if (a== 0) leapyear = true; 
     } 
    } 

    if (leapyear = true) { 
     JOptionPane.showMessageDialog(null, "The year " + year + " is a leapyear."); 
    } else { 
     JOptionPane.showMessageDialog(null, "The year " + year + " is not a leapyear."); 
    } 
} 
} 

Vielen Dank für Ihre Antworten.

+2

Willkommen bei Stack Overflow. Könnten Sie sich etwas Mühe geben, Ihren Code einzukerben? Es ist im Moment wirklich schwer zu lesen. Als nächstes, anstatt ein Optionsfenster einzubringen, was bedeutet, dass wir nicht wissen, welches Jahr Sie tatsächlich verwenden, warum nicht einfach hart programmieren? Dann können wir Ihr genaues Problem einfach reproduzieren. –

+3

'if (leapyear = true)' sollte 'if (leapyear == true)' oder 'if (leapyear)' sein. – resueman

+2

Mögliches Duplikat von [False boolean = True?] (Http://stackoverflow.com/questions/7883502/false-boolean-true). – rgettman

Antwort

0

Sie verwenden die Zuweisung (=) anstelle der Gleichheitsprüfung (==). Verwenden Sie niemals den Gleichheitsoperator mit einem booleschen Wert, sagen Sie einfach if (leapYear) {.

+1

Bitte stimmen Sie, um als Tippfehler zu schließen oder ein geeignetes Duplikat zu finden. Du hast das schon mal gemacht. – Savior

+0

Sie verwenden einen Antwortdialog anstelle eines Dialogs mit enger Abstimmung. Bitte stimme ab, um Fragen zu schließen, die für andere Personen nicht nützlich sein können, anstatt sie zu beantworten. –

1

Ändern Sie die Zuweisung zur bedingten Anweisung in if (leapyear == true).