Schaltjahr problem

ruubi

Mitglied
Wenn ich 1997 als Jahreszahl angebe, wird mir trotzdessen, das 1997 kein Schaltjahr ist, angegeben, das es dies wäre.

Code:

Java:
import javax.swing.JOptionPane;

public class Schaltjahr {
    public static void main(String[]args) {
        String Jahreszahl;
        double Jahr; 
        boolean Schaltjahr = false;
        boolean Schaltjahr2 = false;
        boolean Schaltjahr3 = false; 
        Jahreszahl = JOptionPane.showInputDialog(null, "Geben sie die Jahreszahl an: ");
        Jahr = Double.parseDouble(Jahreszahl);
        Schaltjahr = (Jahr % 4) == 0;
        if (Schaltjahr = false) {
            JOptionPane.showMessageDialog(null, "Ihr Jahr ist kein Schaltjahr"); }
        else if (Schaltjahr = true) { 
             Schaltjahr2 = (Jahr % 100) == 0; }
        if (Schaltjahr2 = false) {
            JOptionPane.showMessageDialog(null, "Ihr Jahr ist ein Schaltjahr"); }
        else if (Schaltjahr2 = true) {
             Schaltjahr3 = (Jahr % 400) == 0; 
        if (Schaltjahr3 = true) {
            JOptionPane.showMessageDialog(null, "Ihr Jahr ist ein Schaltjahr"); }
        else { 
            JOptionPane.showMessageDialog(null, "Ihr Jahr ist kein Schaltjahr"); }
        }
    }
}
 
Irgendwie scheinst du nicht zu lernen
Stimmt.
Du solltest Dich nicht hauptsächlich auf das Resultat konzentrieren.
Java:
import javax.swing.JOptionPane;

public class start {
    public static void main(String[] args) {       
        boolean ok = false;
        while (!ok) {
            try {
                String year = JOptionPane.showInputDialog(null, "Geben sie die Jahreszahl an: ");
                String tmp = isLeapYear(Integer.parseInt(year)) ? "" : "K";
                JOptionPane.showMessageDialog(null, year + " ist " + tmp + "EIN Schaltjahr");
                ok = true;
            } catch (NumberFormatException e) {
                JOptionPane.showMessageDialog(null,"Nur eine Jahreszahl eingeben!");               
            }
        }
    }
    public static boolean isLeapYear(int year) {
        return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
    }
}
 
🙂
Dann versuch es zu verstehen.
Und warum hast Du nicht nachgefragt wenn Du es nicht verstanden hast?
Wer nicht fragt kommt nicht vorwärts. 😉
Du machst hier dieselben Fehler wie bei den Vokalen.
Also hast Du die Hilfestellung nicht verstanden. Fragst nicht nach.
Und jemand sagt, dass Du nicht lernen willst.
Objektiv betrachtet hat das Kommentar also seine Berechtigung und ist nicht lächerlich.
 
Zuletzt bearbeitet:
Sind es denn nicht schon Monate? Deinen anderen Account kennt man doch. Und von dem stellst du 1 zu 1 die selbe Frage und machst weiterhin die selben Fehler, wobei dir viele User bereits mit dem Thema geholfen haben. Wenn das Zufall ist fress ich nen Besen. Wie gesagt, lern if-Anweisungen und du kommst mit deinen zukünftigen Programmen viel schneller vorwärts.
 
Ich hatte keinen anderen Account. Es kann daran liegen, dass ich mit einen Java-Buch lerne, und es deswegen die selben Aufgaben bzw. Fragen sind. Und ich versuche ja zu lernen. Und zu dem Problem von oben es erkennt jetzt zwar ob Schaltjahr oder nicht, aber gibt danach trzd immer "Das Jahr ist ein Schaltjahr" aus, wobei ich mir nicht erklären kann warum.
 
Das Jahr ist ein Schaltjahr" aus, wobei ich mir nicht erklären kann warum
Dann versuche mein Codebeispiel zu verstehen.
Das Problem in Deinem Code ist die schlechte Verwendung von Bedingungen.
Du verwendest 3 boolean und unzählige if then else Bedingungen. Mein Beispiel erledigt die Bedingung in einem Funktionsaufruf : ( funktioniert )
Java:
public static boolean isLeapYear(int year) {
         return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
     }
Versuche das zu verstehen und Du machst Fortschritte.
 
Wobei er schon Fortschritte machen würde, wenn er herausfände, warum zusätzlich immer "Ihr Jahr ist ein Schaltjahr" ausgegeben wird...

@ruubi Geh doch Dein Programm einfach mit einem Debugger Schritt für Schritt durch.
 

Zurück
Oben