Hallo liebe Community,
und zwar habe ich folgendes Problem. Ich habe mir ein Buch zum Einstieg in Java besorgt. Eine Aufgabe hieraus lautet nun "Schreiben Sie ein Kalenderprogramm, das Termine für die Jahre 2010 bis 2019 verwaltet. Verwenden Sie hierzu ein vierdimensionales Feld, und berücksichtigen Sie auch Schaltjahre."
Mein Programmcode lautet bisher
Beim Ausführen des Programmteils 1, also dem Einfügen eines Termins, erhalte ich stets nach der Frage "Welcher Tag?" die Fehlermeldung:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11
at Kalender.main(Kalender.java:110)
Ich hoffe ihr könnt mir da helfen und danke jetzt schonmal jedem, der mein Programmcode durchforstet
und zwar habe ich folgendes Problem. Ich habe mir ein Buch zum Einstieg in Java besorgt. Eine Aufgabe hieraus lautet nun "Schreiben Sie ein Kalenderprogramm, das Termine für die Jahre 2010 bis 2019 verwaltet. Verwenden Sie hierzu ein vierdimensionales Feld, und berücksichtigen Sie auch Schaltjahre."
Mein Programmcode lautet bisher
Java:
import static Prog1Tools.IOTools.*;
public class Kalender {
public static void main(String[] args) {
String[][][][] kalender;
kalender = new String [10][12][][];
for (int i = 0 ; i < kalender.length ; i++) {
for (int j = 0; j < kalender[i].length ; j++) {
switch (j) {
case 0:
kalender[i][j] = new String [31][24];
break; //Januar
case 1:
if (i == 2 || i == 6) { //Februar
kalender[i][j] = new String [29][24]; //
} //
else { //
kalender[i][j] = new String [28][24]; //Februar
}
break;
case 2:
kalender[i][j] = new String [31][24];
break; //März
case 3:
kalender[i][j] = new String [30][24];
break; //April
case 4:
kalender[i][j] = new String [31][24];
break; //Mai
case 5:
kalender[i][j] = new String [30][24];
break; //Juni
case 6:
kalender[i][j] = new String [31][24];
break; //Juli
case 7:
kalender[i][j] = new String [31][24];
break; //August
case 8:
kalender[i][j] = new String [30][24];
break; //September
case 9:
kalender[i][j] = new String [31][24];
break; //Oktober
case 10:
kalender[i][j] = new String [30][24];
break; //November
case 11:
kalender[i][j] = new String [31][24];
break; //Dezember
default: System.out.println("Error" + j);
break;
}
}
}
for (int i = 0; i < kalender.length; i++) {
for (int j = 0; j < kalender[i].length; j++)
for (int k = 0; k < kalender[i][j].length; k++)
for (int l = 0; l < kalender[i][j][k].length; l++)
kalender[i][j][k][l] = l + ":00 Uhr: " ;
}
boolean fertig = false;
while (!fertig) {
System.out.println("Welche Aktion möchten Sie ausführen? \n 1 = Termin eintragen \n 2 = Termin ausgeben \n 3 = Programm beenden");
int auswahl = readInteger("Wählen Sie einen gültigen Parameter: ");
System.out.println();
switch (auswahl) {
case 1: {
int jahr = 0;
int monat = 0;
int tag = 0;
int zeit = 0;
boolean gueltig = false;
while (!gueltig) {
jahr = readInteger("Welches Jahr? ");
jahr = jahr - 2000;
if (jahr < 10 || jahr > 19) {
System.out.println("Nur gültig für 2010 bis 2019. Versuchen Sie es nochmal!");
}
else {
gueltig = true;
}
}
System.out.println();
gueltig = false;
while (!gueltig) {
monat = readInteger("Welcher Monat? ");
if (monat < 1 || monat > 12) {
System.out.println("Nur gültig von 1 bis 12");
}
else {
monat -= 1;
gueltig = true;
}
}
gueltig = false;
while (!gueltig) {
tag = readInteger("Welcher Tag? ");
if (tag < 1 || tag > kalender[jahr][monat].length) {
System.out.println("Nur gültig von 1 bis " + kalender[jahr][monat].length + ". Versuchen Sie es erneut!");
}
else {
tag = tag - 1;
gueltig = true;
}
}
char nochEinTermin = 'j';
while (nochEinTermin == 'j' || nochEinTermin == 'J') {
gueltig = false;
while (!gueltig) {
zeit = readInteger("Welche Uhrzeit? ");
if (zeit < 0 || zeit > 23)
System.out.println("Nur gültig von 0 bis 23. Versuchen Sie es erneut!");
else
gueltig = true;
kalender[jahr][monat][tag][zeit] = readString("Welchen Termin möchten Sie eintragen?");
nochEinTermin = readChar("Möchten Sie an diesem Tag noch ein Termin eintragen? (j/n)");
while ((nochEinTermin != 'j' && nochEinTermin != 'J') && (nochEinTermin != 'n' && nochEinTermin != 'N'))
nochEinTermin = readChar("Ungueltige Eingabe! Versuchen Sie es erneut! (j/n)");
}
}
break;
}
case 2:
case 3:
default:
System.out.println("Falsche Zahl eingegeben! Versuchen Sie es erneut! \n");
}
}
}
}
Beim Ausführen des Programmteils 1, also dem Einfügen eines Termins, erhalte ich stets nach der Frage "Welcher Tag?" die Fehlermeldung:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11
at Kalender.main(Kalender.java:110)
Ich hoffe ihr könnt mir da helfen und danke jetzt schonmal jedem, der mein Programmcode durchforstet
Zuletzt bearbeitet: