Moin moin
Ich bin immoment ein Buch zum Thema Java am lesen
und versuche die Aufgaben im Buch zu lösen. Leider bin ich
immoment an einer Aufgabe die ich selbst nicht lösen kann
und hoffe daher auf eure hilfe.
Die Aufgabenstellung
Erstellen Sie im Projekt JavaUebung03 ein Programm mit dem Namen Schaltjahr. In
einem Eingabefenster soll eine Jahreszahl eingegeben werden. Das Programm soll über
prüfen, ob es sich um ein Schaltjahr handelt. Wenn es ein Schaltjahr ist, soll in einem
Ausgabefenster der Text »Das Jahr xxxx ist ein Schaltjahr!« ausgegeben werden.
Ansonsten soll der Text »Das Jahr xxxx ist kein Schaltjahr!« ausgegeben werden. Dabei
soll anstelle von xxxx noch einmal die eingegebene Jahreszahl ausgegeben werden.
Wenn Sie gefragt werden, wie viele Tage ein Jahr dauert, so würden Sie vermutlich mit
365 Tagen antworten. Das stimmt aber nur ungefähr. Eigentlich vergehen etwa 365,25
Tage bis der Zyklus, den wir ein Jahr nennen, von Neuem beginnt. Würden wir unseren
Kalender immer exakt nach 365 Tagen wieder mit dem 1. Januar beginnen lassen, dann
würden sich die Jahreszeiten allmählich immer weiter verschieben. Irgendwann würden
wir dann im Sommer Weihnachten feiern. Um das zu vermeiden, wurden die
Schaltjahre eingeführt. Sie sorgen also dafür, dass wir unsere Feiertage immer in den
gewohnten Jahreszeiten feiern können.
Für die Überprüfung, ob ein Jahr ein Schaltjahr ist, müssen Sie also wissen nach welchen
Regeln diese Festlegung erfolgt. Gemeinhin sagt man zwar, dass alle durch 4 teilbaren
Jahreszahlen Schaltjahre sind. Das ist aber nicht ganz korrekt, denn es gibt Ausnahmen.
Genau genommen gilt folgende Regelung: Ist die Jahreszahl durch 4 teilbar, dann ist es
ein Schaltjahr, außer die Jahreszahl ist gleichzeitig auch durch 100 teilbar, dann ist das
Jahr kein Schaltjahr, außer die Jahreszahl ist gleichzeitig auch durch 400 teilbar, dann ist
es doch wieder ein Schaltjahr.
Mein 1. Versuch
import javax.swing.JOptionPane;
public class Schaltjahrtest1 {
public static void main(String[] args) {
String eingabe;
int jahr;
eingabe = JOptionPane.showInputDialog("Geben sie ein Jahr ein: ");
jahr = Integer.parseInt(eingabe);
boolean a = false, b = false, c = true;
if (jahr%4 == 0) a = true;
if (jahr%400 == 0) b = true;
if (jahr%100 != 0) c = false;
if (a & b & c == true) {
JOptionPane.showMessageDialog(null, jahr + " ist ein Schaltjahr!");
}
else {
JOptionPane.showMessageDialog(null, jahr + " ist kein Schaltjahr!");
}
}
}
Mein 2. Versuch
import javax.swing.JOptionPane;
public class Schaltjahrtest2 {
public static void main(String[] args) {
String eingabe;
int jahr;
eingabe = JOptionPane.showInputDialog("Geben sie ein Jahr ein: ");
jahr = Integer.parseInt(eingabe);
boolean istSchaltjahr;
if (jahr%4 == 0) istSchaltjahr = true;
else if (jahr%400 == 0) istSchaltjahr = true;
else if (jahr%100 == 0) istSchaltjahr = false;
if (istSchaltjahr == true) {
JOptionPane.showMessageDialog(null, jahr + " ist ein Schaltjahr!");
}
else {
JOptionPane.showMessageDialog(null, jahr + " ist kein Schaltjahr!");
}
}
}
Mein 3. Versuch
import javax.swing.JOptionPane;
public class Schaltjahrtest3 {
public static void main(String[] args) {
String eingabe;
int jahr;
eingabe = JOptionPane.showInputDialog("Geben sie ein Jahr ein: ");
jahr = Integer.parseInt(eingabe);
if (jahr%4 == 0) {
if ((jahr%400 == 0) && (jahr%100 == 0)) {
JOptionPane.showMessageDialog(null, jahr + " ist ein Schaltjahr!");
}
else {
JOptionPane.showMessageDialog(null, jahr + " ist kein Schaltjahr!");
}
}
else {
JOptionPane.showMessageDialog(null, jahr + " ist ein Schaltjahr!");
}
}
}
Der Compiler wirft keine fehlermeldung aus mein Problem ist
das diese Programme nicht Funktionieren wie sie sollen und ich einach
nicht mehr weiter weis entweder sagen sie das 2100 (kein Schaltjahr) ein Schaltjahr ist und wenn ich es schaffe das 2100 richtig beantwortet wird dann sagt mir das Programm das 2000 (schaltjahr) kein schaltjahr ist. Ich will keine komplett fertigen programme nur lösungsansätze

Ich verstehe das die zahl ohne rest durch 4 teilbarsein muss gleichzeitig aber nicht durch 100 und wenn doch muss sie auch durch 400 teilbar sein aber ich versteh leider nicht wie ich das umsetzten soll... ich hoffe das ihr mir hier weiter helfen könnt ...
achja noch dazu gesagt ich bin natürlich ein blutiger anfänger was java und programmieren allgemein angeht deswegen bitte net schlagen xD