Hallo Leute,
ich habe eine Übungsaufgabe, bei der ich ein Programm schreiben soll, das nach Angabe eines Monats (als Int) und einer Jahreszahl (ebenfalls Int) die Anzahl Tage benennt, die der jeweilige Monat hat. Schaltjahre beim Februar sollen berücksichtigt werden (also durch 4 teilbar, nicht aber durch 100 außer durch 400).
Mein Programm
[CODE lang="java" title="Code"]System.out.println("Ausgegeben wird die Anzahl der Tage eines jeweiligen Monats bei folgenden Angaben: ");
int days = 0;
boolean leapyear;
System.out.println("Zahl des Monats nennen: ");
int month = new java.util.Scanner(System.in).nextInt();
System.out.println("Jahr nennen: ");
int year = new java.util.Scanner(System.in).nextInt();
if ((year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0))) {
leapyear = true;
}
if (month == 1) {
days = 31;
}
else if (month == 3) {
days = 31;
}
else if (month == 5) {
days = 31;
}
else if (month == 7) {
days = 31;
}
else if (month == 8) {
days = 31;
}
else if (month == 10)
days = 31;
else if (month == 12) {
days = 31;
}
else if (month == 2) {
if (leapyear = true) {
days = 29;
}
else {
days = 28;
}
}
else {
days = 30;
}
System.out.println(days);[/CODE]
spuckt aber immer 29 Tage für den Monat Februar aus. Warum arbeitet es nicht mit dem boolean (macht auch keinen Unterschied, ob ich das boolean leapyear = true vorab oder in die if-else-Bedingung zum Monat Februar packe)?
Beispiel: 1912 ist ein Schaltjahr, 2022 ist keines. Egal, was ich eingebe, der Februar hat 29 Tage.
Der Rest vom Programm funktioniert.
Hat jemand eine Idee?
Danke und LG Yannik
PS: Ich weiß, dass es etwas umständlich ist sich auf die Monate mit 31 Tagen zu konzentrieren, aber jetzt steht es schon so dar
ich habe eine Übungsaufgabe, bei der ich ein Programm schreiben soll, das nach Angabe eines Monats (als Int) und einer Jahreszahl (ebenfalls Int) die Anzahl Tage benennt, die der jeweilige Monat hat. Schaltjahre beim Februar sollen berücksichtigt werden (also durch 4 teilbar, nicht aber durch 100 außer durch 400).
Mein Programm
[CODE lang="java" title="Code"]System.out.println("Ausgegeben wird die Anzahl der Tage eines jeweiligen Monats bei folgenden Angaben: ");
int days = 0;
boolean leapyear;
System.out.println("Zahl des Monats nennen: ");
int month = new java.util.Scanner(System.in).nextInt();
System.out.println("Jahr nennen: ");
int year = new java.util.Scanner(System.in).nextInt();
if ((year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0))) {
leapyear = true;
}
if (month == 1) {
days = 31;
}
else if (month == 3) {
days = 31;
}
else if (month == 5) {
days = 31;
}
else if (month == 7) {
days = 31;
}
else if (month == 8) {
days = 31;
}
else if (month == 10)
days = 31;
else if (month == 12) {
days = 31;
}
else if (month == 2) {
if (leapyear = true) {
days = 29;
}
else {
days = 28;
}
}
else {
days = 30;
}
System.out.println(days);[/CODE]
spuckt aber immer 29 Tage für den Monat Februar aus. Warum arbeitet es nicht mit dem boolean (macht auch keinen Unterschied, ob ich das boolean leapyear = true vorab oder in die if-else-Bedingung zum Monat Februar packe)?
Beispiel: 1912 ist ein Schaltjahr, 2022 ist keines. Egal, was ich eingebe, der Februar hat 29 Tage.
Der Rest vom Programm funktioniert.
Hat jemand eine Idee?
Danke und LG Yannik
PS: Ich weiß, dass es etwas umständlich ist sich auf die Monate mit 31 Tagen zu konzentrieren, aber jetzt steht es schon so dar