Nabend,
ich (lernender) habe eine kurze Frage bezüglich einer Aufgabe aus meinen Buch
"Grundkurs Programmieren in Java (7.Auflage)". Natürlich könnte ich mir auch die Lösung direkt anschauen, jedoch möchte ich zuvor den steinigen Weg dahin begreifen
Folgende Aufgabe soll ich lösen:
"Seite 130 - Aufgabe 5.3
Schreiben Sie ein Kalenderprogramm, das Termine fuer die Jahre 2000 bis 2009 verwaltet.
Verwenden Sie hierzu ein vierdimensionales Feld, und beruecksichtigen Sie
auch Schaltjahre."
Bevor ich mich mit den 10 Jahren und den Schlatjahren beschäftige, wollte ich erst einmal den Code insofern bearbeiten, das ich neben der (funktionierenen) Auswahl von [Tag][Stunde] auf [Monat][Tag][Stunde] komme. Wenn ich meinen Code in "Java-Editor 13.27" starten möchte kommt folgende Fehlermeldung:
"Exception in thread "main" java.lang.NullPointerException
at JahresKalenderVereinfacht.main(JahresKalenderVereinfacht.java:28)"
So wie ich die Fehlermeldung jetzt verstehe, muss dieser in der Zeile 28 sein. Jedoch fehlt mir vielleicht der Durchblick bei den Problem. Habe ich bei der Definition einen Fehler gemacht?
Ausgegeben soll die Frage nach:
1. Neuer Eintrag im Kalender
2. Termine aus dem Kalender ausgeben
3. Programm beenden
Welcher Monat -> Eingabe
Welcher Tag -> Eingabe
Welche Stunde -> Eingabe
Danke für die Hilfestellung
ich (lernender) habe eine kurze Frage bezüglich einer Aufgabe aus meinen Buch
"Grundkurs Programmieren in Java (7.Auflage)". Natürlich könnte ich mir auch die Lösung direkt anschauen, jedoch möchte ich zuvor den steinigen Weg dahin begreifen
Folgende Aufgabe soll ich lösen:
"Seite 130 - Aufgabe 5.3
Schreiben Sie ein Kalenderprogramm, das Termine fuer die Jahre 2000 bis 2009 verwaltet.
Verwenden Sie hierzu ein vierdimensionales Feld, und beruecksichtigen Sie
auch Schaltjahre."
Bevor ich mich mit den 10 Jahren und den Schlatjahren beschäftige, wollte ich erst einmal den Code insofern bearbeiten, das ich neben der (funktionierenen) Auswahl von [Tag][Stunde] auf [Monat][Tag][Stunde] komme. Wenn ich meinen Code in "Java-Editor 13.27" starten möchte kommt folgende Fehlermeldung:
"Exception in thread "main" java.lang.NullPointerException
at JahresKalenderVereinfacht.main(JahresKalenderVereinfacht.java:28)"
Code:
import Prog1Tools.IOTools;
public class JahresKalenderVereinfacht {
public static void main (String[] args) {
//Seite 125 - folgende Zeile bewirkt exakt das Gleiche
//kann nur bei "rechteckigen" Arrays erzeugt werden die nur
//aus Zeilen gleicher Länge bestehen
String[][][] termine;
//Es wird ein Feld in der ersten Dimension mit 12 Einträgen belegt,
//die jeweils auf ein zweidimensionales Feld verweisen
termine = new String[12][][];
termine[0] = new String[31][24]; // Januar
termine[1] = new String[28][24]; // Februar
termine[2] = new String[31][24]; // März
termine[2] = new String[30][24]; // April
termine[2] = new String[31][24]; // Mai
termine[2] = new String[30][24]; // Juni
termine[2] = new String[31][24]; // Juli
termine[2] = new String[31][24]; // August
termine[2] = new String[30][24]; // September
termine[2] = new String[31][24]; // Oktober
termine[10]= new String[30][24]; // November
termine[11]= new String[31][24]; // Dezember
//im Vorfeld muss das Feld mit Startwerten belegt werden (leere String)
//dies wird ermöglicht durch folgende verschachtelte Schleife - Seite 126
for (int i = 0; i < termine.length; i++)
for (int j = 0; j < termine[i].length; j++)
for (int k = 0; k < termine[i][j].length; k++)
termine[i][j][k] = "";
//Das Hauptprogramm in einer Schleife
boolean fertig=false;
while (!fertig) {
//Zuerst ein Bildschirmmenü
System.out.println("1 = Neuer Eintrag");
System.out.println("2 = Termine ausgaben");
System.out.println("3 = Programm beenden");
int auswahl=IOTools.readInteger("Ihre Wahl:");
//Nun eine Fallunterscheidung
switch (auswahl) {
case 1: //Termine eingeben
int monat=IOTools.readInteger("Welcher Monat?");
if (monat<1 || monat>12) {
System.out.println("Eingabefehler!");
break;
} // end of if
int tag=IOTools.readInteger("Welcher Tag?");
if (tag<1 || tag>31) {
System.out.println("Eingabefehler!");
break;
} // end of if
int nummer=IOTools.readInteger("Wie viel Uhr?");
if (nummer<0 || nummer>23) {
System.out.println("Eingabefehler!");
break;
} // end of if
String eingabe=IOTools.readLine("Termin:");
termine[monat-1][tag-1][nummer]=eingabe; //Termine einordnen
break;
case 2: //Termine ausgeben
int m=IOTools.readInteger("Welcher Monat?");
if (m<1 || m>12) {
System.out.println("Eingabefehler!");
break;
} // end of if
int t=IOTools.readInteger("Welcher Tag?");
if (t<1 || t>31) {
System.out.println("Eingabefehler!");
break;
} // end of if
for (int j=0;j<termine[m-1].length; j++) {
for (int i=0; i<termine[t-1].length; i++) {
System.out.println(i + " Uhr: " + termine[t-1][i]);
} // end of for
} // end of for
break;
case 3: //Programm beenden
fertig=true;
break;
default: //Falsche Zahl eingegeben
System.out.println("Eingabefehler!");
} // end of switch
} // end of while
} // end of for
}
So wie ich die Fehlermeldung jetzt verstehe, muss dieser in der Zeile 28 sein. Jedoch fehlt mir vielleicht der Durchblick bei den Problem. Habe ich bei der Definition einen Fehler gemacht?
Ausgegeben soll die Frage nach:
1. Neuer Eintrag im Kalender
2. Termine aus dem Kalender ausgeben
3. Programm beenden
Welcher Monat -> Eingabe
Welcher Tag -> Eingabe
Welche Stunde -> Eingabe
Danke für die Hilfestellung