Programm zur Berechnung von Schaltjahren

Die .java sowie die .jar können hier herunter geladen werden. Schaltjahrrechner

 

Update: kürzere Version


/*
  Schaltjahrrechner
  Copyright (C) 2015 Timo Wosnitza

  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
import javax.swing.JOptionPane;

public class Main {

  public static void main(String[] args) {

    String eingabeJahr = null;
    boolean programmLauft = true;
    final String EINGABEJAHR = "Geben Sie das zu prüfende Jahr ein! Bsp.: 2000";
    final String FEHLERBEIEINGABE = "Sry es gab einen Fehler bei der Eingabe!";
    final String TEXTSCHALTJAHR = "Schaltjahr!";
    final String TEXTKEINSCHALTJAHR = "Kein Schaltjahr!";

    while (programmLauft) {
      eingabeJahr = JOptionPane.showInputDialog(EINGABEJAHR);
      if (eingabeJahr == null) {
        programmLauft = false;
      } else {
        int jahr = 0;
        try {
          Integer.parseInt(eingabeJahr);
        } catch (NumberFormatException e) {
          JOptionPane.showMessageDialog(null, FEHLERBEIEINGABE);
        }
        if (jahr > 0 && jahr < Integer.MAX_VALUE) {
          schaltjahrPruefung(jahr);
          if (schaltjahrPruefung(jahr)){
            JOptionPane.showMessageDialog(null, TEXTSCHALTJAHR);
          }else {
            JOptionPane.showMessageDialog(null, TEXTKEINSCHALTJAHR);
          }
        } else {
          JOptionPane.showMessageDialog(null, FEHLERBEIEINGABE);
        }
      }
    }
    System.exit(0);
  }// Ende main

  protected static boolean schaltjahrPruefung(int jahr) {
    return (jahr % 400 == 0 || jahr % 4 == 0 && jahr % 100 != 0);
  }

}// Ende Klasse

 


 

/*
   Schaltjahrrechner
   Copyright (C) 2015 Timo Wosnitza

   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program. If not, see <http://www.gnu.org/licenses/
   */

/*
 * Dank an die Tester die mit dem Programm so ziemlich alles gemacht haben,
 * ausser einfach eine Jahreszahl zum Testen einzugeben ;)
 * Maik N., Volker Z., Mahmoud K., Tom E., Stefan M.
 */

package schaltjahrrechner;

import java.time.LocalDate;

import javax.swing.JOptionPane;

/**
 * @author Timo Wosnitza
 *
 */
public class Schaltjahrrechner {

  public static void main(String[] args) {
    //Verrhindern das etwas anderes als Integer eingegeben werden
    try {
      Schaltjahrrechner.eingabemethode();
    } catch (NumberFormatException e) {
      JOptionPane
        .showMessageDialog(
            null,
            "Es ist ein Fehler bei der Eingabe aufgetreten, geben Sie bitte nur ganze Zahlen ein! Bsp.: 2000\n "
            + "Das kleinste prüfbare Jahr ist 1 n.Chr. und das größte prüfbare Jahr lautet: 2147483647");
      // wieder zur Eingabe
      Schaltjahrrechner.eingabemethode();
    }

  }

  private static void eingabemethode() {
    // Eingabe der Daten per GUI
    String eingabe = JOptionPane
      .showInputDialog("Bitte geben Sie das zu prüfende Jahr ein! Bsp.: 2000");
    // bei Abbruch schliesst das Programm sofort ohne eine Meldung zu geben
    if (eingabe == null) {
      System.exit(0);
    }
    int zahl = Integer.parseInt(eingabe);
    if (zahl < 1 || zahl > Integer.MAX_VALUE) { // Integer.MAX_VALUE
      // 2147483647
      JOptionPane
        .showMessageDialog(
            null,
            "Das kleinste prüfbare Jahr ist 1 n.Chr. und das größte prüfbare Jahr lautet: 2147483647");
      // wieder zur Eingabe
      Schaltjahrrechner.eingabemethode();
    } else {
      // hier gehts weiter zur Berechnung
      Schaltjahrrechner.berechnung(zahl);
    }
  }// Ende eingabemethode

  private static void berechnung(int zahl) {
    String schalter;
    LocalDate aktuellesdatum = LocalDate.now();
    aktuellesdatum.getYear();
    // Schalter fuer die Ausgabe ob das Jahr bereits war oder noch wird
    if (zahl <= aktuellesdatum.getYear()) {
      schalter = "war";
    } else {
      schalter = "wird";
    }
    if ((zahl % 4 == 0 && zahl % 100 == 0 && zahl % 400 == 0)
        || (zahl % 4 == 0 && zahl % 100 != 0)) {
      JOptionPane.showMessageDialog(null, "Ihre Eingabe war " + zahl
          + " und das Jahr " + zahl + " " + schalter
          + " ein Schaltjahr");
    } else {
      JOptionPane.showMessageDialog(null, "Ihre Eingabe war " + zahl
          + " und das Jahr " + zahl + " " + schalter
          + " KEIN Schaltjahr");
    }
    Schaltjahrrechner.eingabemethode();
  }// Ende berechnung
}

Schreibe einen Kommentar