H
Hilfe1992
Gast
Hi
brauch mal Hilfe beim Speichern und Laden von Dateien. Hab im Moment nen halben TerminKalender(ganz einfach ohne GUI...). Und nja die Termine sollten persistent gespeichert werden. Aber ich komm grad net weiter ich kann sie zwar anscheinend speichern aber nicht einlesen.
Fehlt noch die Main die alles aufruft... aber die is eig Wayne. Also krieg da nen Fehler den ich mal überhaupt nicht versteh. Er schreibt die Daten in die Datei, aber das auslesen funktioniert überhaupt nicht.
Fehler ist:
Danke schonmal. Hoffe mal bei dem Code blickt einer durch. Hab net alles von den klassen reingeschrieben. Vor allem Kalender is es nur des wichtigste.
mfg
brauch mal Hilfe beim Speichern und Laden von Dateien. Hab im Moment nen halben TerminKalender(ganz einfach ohne GUI...). Und nja die Termine sollten persistent gespeichert werden. Aber ich komm grad net weiter ich kann sie zwar anscheinend speichern aber nicht einlesen.
Java:
import java.io.*;
public class Termin implements Comparable<Termin>, Serializable
{
private String terminName, anmerkung;
private int jahr, monat, tag, uhrZeitStd, uhrZeitMin;
public Termin(String terminName, int jahr, int monat, int tag, int uhrZeitStd, int uhrZeitMin, String anmerkung)
{
this.terminName = terminName;
this.jahr = jahr;
this.monat = monat;
this.tag = tag;
this.uhrZeitStd = uhrZeitStd;
this.uhrZeitMin = uhrZeitMin;
this.anmerkung = anmerkung;
}
@Override
public String toString() {
return "|| " + terminName + "\t\t\t||" + tag + "." + monat + "." + jahr + "\t|| " + uhrZeitStd + ":" + uhrZeitMin +
"\t|| " + anmerkung + "\t\t\t\t\t\t\t||";
}
public int compareTo(Termin o)
{
if (this.jahr < o.jahr)
{
return -1;
}
else if (this.jahr > o.jahr)
{
return 1;
}
else
{
if (this.monat < o.monat)
{
return -1;
}
else if (this.monat > o.monat)
{
return 1;
}
else
{
if(this.tag < o.tag)
{
return -1;
}
else if(this.tag > o.tag)
{
return 1;
}
else
{
if(this.uhrZeitStd < o.uhrZeitStd)
{
return -1;
}
else if(this.uhrZeitStd > o.uhrZeitStd)
{
return 1;
}
else
{
if(this.uhrZeitMin < o.uhrZeitMin)
{
return -1;
}
else if(this.uhrZeitMin > o.uhrZeitMin)
{
return 1;
}
else
{
return 0;
}
}
}
}
}
}
public String getTerminName() {
return terminName;
}
public void setTerminName(String terminName) {
this.terminName = terminName;
}
public int getJahr() {
return jahr;
}
public void setJahr(int jahr) {
this.jahr = jahr;
}
public int getMonat() {
return monat;
}
public void setMonat(int monat) {
this.monat = monat;
}
public int getTag() {
return tag;
}
public void setTag(int tag) {
this.tag = tag;
}
public int getUhrZeitStd() {
return uhrZeitStd;
}
public void setUhrZeitStd(int uhrZeitStd) {
this.uhrZeitStd = uhrZeitStd;
}
public int getUhrZeitMin() {
return uhrZeitMin;
}
public void setUhrZeitMin(int uhrZeitMin) {
this.uhrZeitMin = uhrZeitMin;
}
public String getAnmerkung() {
return anmerkung;
}
public void setAnmerkung(String anmerkung) {
this.anmerkung = anmerkung;
}
}
Java:
import java.io.*;
import java.util.*;
public class Kalender
{
int index = 0;
int terminNr = index+1;
Termin Termine[] = new Termin[5000];
ObjectOutputStream o = null;
ObjectInputStream i =null;
public Kalender(){}
public void NeuerTermin()
{
Scanner scanInt = new Scanner(System.in);
Scanner scanName = new Scanner(System.in);
Scanner scanAnmerkung = new Scanner(System.in);
String terminName, anmerkung;
int jahr, monat, tag, uhrZeitStd, uhrZeitMin;
try
{
o = new ObjectOutputStream(new FileOutputStream("Termin.dat",true));
}
catch(Exception e)
{
System.exit(0);
}
scanInt.reset();
scanName.reset();
scanAnmerkung.reset();
while(true)
{
System.out.println("Geben sie bitte den Namen des Termines ein.");
try
{
terminName = scanName.nextLine();
break;
}
catch(InputMismatchException e)
{
scanName.next();
System.out.println("Sie haben einen ungültigen Terminnamen eingegeben.");
}
}
while(true)
{
System.out.println("Geben sie bitte das Jahr des Termines ein.");
try
{
jahr = scanInt.nextInt();
if(jahr>2010 && jahr<5000)
break;
else
System.out.println("Bitte beachten sie, das die Eingabe größer als 2010 sein muss.\n");
}
catch(InputMismatchException e)
{
scanInt.next();
System.out.println("Sieh haben ein ungültiges Jahr eingegeben.");
System.out.println("Bitte beachten sie, das die Eingabe größer als 2010 sein muss.\n");
}
}
while(true)
{
System.out.println("Geben sie bitte den Monat des Termines ein.");
try
{
monat = scanInt.nextInt();
if(monat>0 && monat<13)
break;
else
System.out.println("Bitte beachten sie, das die Eingabe zwischen 1 und 12 sein muss.\n");
}
catch(InputMismatchException e)
{
scanInt.next();
System.out.println("Sie haben einen ungültigen Monat eingegeben.");
System.out.println("Bitte beachten sie, das die Eingabe zwischen 1 und 12 sein muss.\n");
}
}
TagWhileSchleife:
while(true)
{
System.out.println("Geben sie bitte den Tag des Termines ein.");
try
{
tag = scanInt.nextInt();
if((jahr%4 == 0)&&(jahr%100 != 0)||(jahr%400 == 0))
{
//Schaltjahr
switch(monat)
{
case 1:
if(tag>0 && tag<32)
break TagWhileSchleife;
else
break;
case 2:
if(tag>0 && tag<30)
break TagWhileSchleife;
else
break;
case 3:
if(tag>0 && tag<32)
break TagWhileSchleife;
else
break;
case 4:
if(tag>0 && tag<31)
break TagWhileSchleife;
else
break;
case 5:
if(tag>0 && tag<32)
break TagWhileSchleife;
else
break;
case 6:
if(tag>0 && tag<31)
break TagWhileSchleife;
else
break;
case 7:
if(tag>0 && tag<32)
break TagWhileSchleife;
else
break;
case 8:
if(tag>0 && tag<32)
break TagWhileSchleife;
else
break;
case 9:
if(tag>0 && tag<31)
break TagWhileSchleife;
else
break;
case 10:
if(tag>0 && tag<32)
break TagWhileSchleife;
else
break;
case 11:
if(tag>0 && tag<31)
break TagWhileSchleife;
else
break;
case 12:
if(tag>0 && tag<32)
break TagWhileSchleife;
else
break;
default:
System.err.println("Fehler. \nDas Programm wird beendet.");
System.exit(0);
}
}
else
{
//kein Schaltjahr
switch(monat)
{
case 1:
if(tag>0 && tag<32)
break TagWhileSchleife;
else
break;
case 2:
if(tag>0 && tag<29)
break TagWhileSchleife;
else
break;
case 3:
if(tag>0 && tag<32)
break TagWhileSchleife;
else
break;
case 4:
if(tag>0 && tag<31)
break TagWhileSchleife;
else
break;
case 5:
if(tag>0 && tag<32)
break TagWhileSchleife;
else
break;
case 6:
if(tag>0 && tag<31)
break TagWhileSchleife;
else
break;
case 7:
if(tag>0 && tag<32)
break TagWhileSchleife;
else
break;
case 8:
if(tag>0 && tag<32)
break TagWhileSchleife;
else
break;
case 9:
if(tag>0 && tag<31)
break TagWhileSchleife;
else
break;
case 10:
if(tag>0 && tag<32)
break TagWhileSchleife;
else
break;
case 11:
if(tag>0 && tag<31)
break TagWhileSchleife;
else
break;
case 12:
if(tag>0 && tag<32)
break TagWhileSchleife;
else
break;
default:
System.err.println("Fehler. \nDas Programm wird beendet.");
System.exit(0);
}
}
System.out.println("Bitte beachten sie, das die Eingabe zwischen 1 und 28,29,30 oder 31 sein muss.\n");
}
catch(InputMismatchException e)
{
scanInt.next();
System.out.println("Sie haben einen ungültigen Tag eingegeben.");
System.out.println("Bitte beachten sie, das die Eingabe zwischen 1 und 28,29,30 oder 31 sein muss.\n");
}
}
while(true)
{
System.out.println("Geben sie bitte die Uhrzeit(Stunden) des Termines ein.");
try
{
uhrZeitStd = scanInt.nextInt();
if(uhrZeitStd>=0 && uhrZeitStd<24)
break;
else
System.out.println("Bitte beachten sie, das die Eingabe zwischen 0 und 23 sein muss.(24H Form).\n");
}
catch(InputMismatchException e)
{
scanInt.next();
System.out.println("Sie haben eine ungültige Uhrzeit(Stunden) eingegeben.");
System.out.println("Bitte beachten sie, das die Eingabe zwischen 0 und 23 sein muss.(24H Form).\n");
}
}
while(true)
{
System.out.println("Geben sie bitte die Uhrzeit(Minuten) des Termines ein.");
try
{
uhrZeitMin = scanInt.nextInt();
if(uhrZeitMin>=0 && uhrZeitMin<60)
break;
else
System.out.println("Bitte beachten sie, das die Eingabe zwischen 0 und 59 sein muss.\n");
}
catch(InputMismatchException e)
{
scanInt.next();
System.out.println("Sie haben eine ungültige Uhrzeit eingegeben.");
System.out.println("Bitte beachten sie, das die Eingabe zwischen 0 und 59 sein muss.\n");
}
}
while(true)
{
System.out.println("Geben sie bitte eine Anmerkung zum Termines ein.");
try
{
anmerkung = scanAnmerkung.nextLine();
break;
}
catch(InputMismatchException e)
{
scanAnmerkung.next();
System.out.println("Sie haben eine ungültige Anmerkung eingegeben.\n");
}
}
System.out.println("Ihre Termin wurde hinzugefügt.\n\n");
Termine[index] = new Termin(terminName, jahr, monat, tag, uhrZeitStd, uhrZeitMin, anmerkung);
try
{
o.writeObject(Termine[index]);
}
catch (Exception e)
{
System.exit(0);
}
index++;
Hauptmenue();
}
public void TermineAusgeben()
{
int menueAuswahl;
Scanner scanInt = new Scanner(System.in);
try
{
i = new ObjectInputStream(new FileInputStream("Termin.dat"));
}
catch (Exception e)
{
System.exit(0);
}
for(int a =0;;a++)
{
try
{
Termine[a] = (Termin) i.readObject();
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
System.exit(0);
}
catch (IOException e)
{
e.printStackTrace();
System.exit(0);
}
catch(Exception e)
{
break;
}
}
System.out.println("Ihre bisherigen Termine:");
System.out.print("|| Nr. \t");
System.out.print("|| Terminname: \t\t");
System.out.print("|| Datum: \t");
System.out.print("|| Uhrzeit: \t");
System.out.println("|| Anmerkung: \t\t\t\t\t\t\t||");
for(int i = 0; i<this.index;i++)
{
System.out.print("|| " + (i+1) + "\t");
System.out.println(Termine[i].toString());
terminNr++;
}
//Menü zum Auswählen der nächsten Aktion....wird per While-Schleife getan.
System.out.println("\n\nWelche Option wollen sie vornehmen?\n");
System.out.println("\t 1 Den Termin ändern.");
System.out.println("\t 2 Kalenderwoche und Wochentag des Termines ausgeben.");
System.out.println("\t 3 Zurück ins Hauptmenü.");
System.out.println("\t 4 Programm beenden.");
while(true)
{
System.out.println("Bitte geben sie die Zahl vor der Option ein.");
try
{
menueAuswahl = scanInt.nextInt();
if(menueAuswahl>0 && menueAuswahl<5)
break;
else
System.out.println("Sie haben eine ungültige Zahl eingegeben. Bitte versuche sie es erneut.");
}
catch(Exception e)
{
System.out.println("Sie haben eine ungültige Zahl eingegeben.");
System.out.println("Bitte geben sie erneut eine Zahl ein.(1-4)");
scanInt.next();
}
}
switch(menueAuswahl)
{
case 1:
TerminAendern();
break;
case 2:
KalenderWoche();
break;
case 3:
Hauptmenue();
break;
case 4:
System.out.println("Auf Wiedersehen!");
System.exit(0);
break;
default:
System.err.println("Fehler. \nDas Programm wird beendet.");
System.exit(0);
break;
}
}
Fehlt noch die Main die alles aufruft... aber die is eig Wayne. Also krieg da nen Fehler den ich mal überhaupt nicht versteh. Er schreibt die Daten in die Datei, aber das auslesen funktioniert überhaupt nicht.
Fehler ist:
Code:
java.io.StreamCorruptedException: invalid type code: AC
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at testat.Kalender.TermineAusgeben(Kalender.java:333)
at testat.Kalender.Hauptmenue(Kalender.java:1038)
at testat.Main.main(Main.java:40)
Danke schonmal. Hoffe mal bei dem Code blickt einer durch. Hab net alles von den klassen reingeschrieben. Vor allem Kalender is es nur des wichtigste.
mfg