P
Pandabär
Gast
Hallo zusammen,
Mit Java kenne ich mich noch zuwenig aus, probiere gerade etwas an einer kleinen Applikation.
Im unteren Quelltext wollte ich gewisse Objekte serialisieren und deserialisieren, aber es funktioniert nicht.
Es müssten die Eingaben für "Neues Auto" serialisiert und "Autos anzeigen" deserialisiert werden, soweit ich sehen kann, müsste man vielleicht an diesen Punkten ansetzen, aber wie bring man es zum laufen?
Code ohne serialisieren/deserialisieren.
Code schnipsel seri.-deser.
Ganzer Code, der aber nicht funktioniert...
Vielen Dank für die Hilfe
J.
Mit Java kenne ich mich noch zuwenig aus, probiere gerade etwas an einer kleinen Applikation.
Im unteren Quelltext wollte ich gewisse Objekte serialisieren und deserialisieren, aber es funktioniert nicht.
Es müssten die Eingaben für "Neues Auto" serialisiert und "Autos anzeigen" deserialisiert werden, soweit ich sehen kann, müsste man vielleicht an diesen Punkten ansetzen, aber wie bring man es zum laufen?
Code ohne serialisieren/deserialisieren.
Java:
// Diese Klasse ist der Kern der Anwendung
// Sie wird der VM zum Start übergeben
import java.io.Serializable;
import java.io.*;
import java.util.Scanner;
import fahrzeug.*;
public class machine implements Serializable
{
static int anz_autos = 0;
static final int AUTO_MAX = 50;
static Auto[] auto_liste = new Auto[AUTO_MAX];
public static void main(String[] argument)
{
boolean ende = false;
do
{
// erstmal das Menue ausgeben
System.out.println("\nCarControl - die "+"objektorientierte Fahrzeugverwaltung");
System.out.println("=========================="+"============================");
System.out.println("\nHauptmenue");
System.out.println("\n(1) Autos anzeigen");
System.out.println("(2) Neues Auto");
System.out.println("(3) Auto verleihen");
System.out.println("(4) Autos entfernen");
System.out.println("\n(0) Programm beenden");
try
{
//versuchen, die Benutzereingabe zu lesen
System.out.println("\nAuswahl: ");
Scanner eingabe = new Scanner(System.in);
short auswahl = eingabe.nextShort();
//Benutzereingabe verarbeiten
switch (auswahl)
{
case 1:
liste_anzeigen(anz_autos);
//for (int i=0; i < anz_autos; i++)
//auto_liste[i].anzeigen();
break;
case 2:
anz_autos = neues_auto(anz_autos);
if (anz_autos < AUTO_MAX && anz_autos >=0)
anz_autos = neues_auto(anz_autos);
else System.out.println("Die Autoliste ist voll!");
break;
case 3:
if (auto_liste[auto_wahl(anz_autos)].verleihen())
System.out.println("OK");
else
System.out.println("Auto bereits verliehen!");
break;
case 4:
if (auto_liste[auto_wahl(anz_autos)].entleihen())
System.out.println("OK");
else
System.out.println("Auto nicht verliehen");
break;
case 0:
System.out.println("\nBis bald...");
ende = true;
break;
default:
System.out.println("\nFalsche Auswahl!");
}
} catch (Exception e) // falsche Eingabe??
{
System.out.println("Nur ZAHLEN eingeben!");
}
} while (!ende);
}
static int neues_auto(int auto_nr)
{
System.out.println("\nNeues Auto eingeben");
System.out.println("=======================");
auto_liste[auto_nr] = new Auto();
while (!auto_liste[auto_nr].eingeben())
{
System.out.println("Fehlerhafte Eingabe!");
}
if (auto_nr + 1 > 1)
sortieren(auto_nr + 1);
System.out.println("Neues Auto angelegt.");
return (auto_nr + 1);
}
static void liste_anzeigen(int auto_nr)
{
System.out.println("\nAuto Liste");
System.out.println("==========\n");
for (int i=0; i < auto_nr; i++)
{
System.out.print((i+1)+") ");
System.out.println(auto_liste[i].list_eintrag());
}
}
static void sortieren(int auto_nr)
{
Auto puffer;
for (int lauf=0; lauf<auto_nr; lauf++)
for (int pos=0; pos<auto_nr-1; pos++)
if (auto_liste[pos].list_eintrag().compareTo (auto_liste[pos+1].list_eintrag())>0)
{
puffer = auto_liste[pos];
auto_liste[pos] = auto_liste[pos+1];
auto_liste[pos+1] = puffer;
}
}
static int auto_wahl(int auto_nr)
{
boolean ende = false;
short auswahl = 0;
do
{
liste_anzeigen(auto_nr);
try
{
System.out.print("\nAuswahl: ");
Scanner eingabe = new Scanner(System.in);
auswahl = eingabe.nextShort();
if (auswahl > 0 && auswahl <= auto_nr)
ende = true;
else
System.out.println("Ungueltige Auswahl!");
} catch (Exception e)
{
System.out.println("Eine ZAHL eingeben!");
}
} while (!ende);
return (auswahl-1);
}
}
Code schnipsel seri.-deser.
Java:
FileOutputStream dat = null;
ObjectOutputStream out = null;
auto_liste[auto_nr] = new Auto();
try
{
dat = new FileOutputStream("datei.dat");
out = new ObjectOutputStream(dat);
out.writeObject(auto_liste[auto_nr]);
auto_liste[auto_nr].eingeben();
} catch (IOException e){e.printStackTrace();}
finally{
if (out!=null)try{out.close();}catch(Exception e2){};
}
FileInputStream dat1 = null;
ObjectInputStream in = null;
try
{
dat1 = new FileInputStream("datei.dat");
in = new ObjectInputStream(dat1);
Auto = (auto_liste[auto_nr]) in.readObject();
liste_anzeigen(anz_autos);
} catch (IOException e){e.printStackTrace();}
finally{
if (in!=null)try{in.close();}catch(Exception e2){};
}
Ganzer Code, der aber nicht funktioniert...
Java:
// Diese Klasse ist der Kern der Anwendung
// Sie wird der VM zum Start übergeben
import java.io.Serializable;
import java.io.*;
import java.util.Scanner;
import fahrzeug.*;
public class machine implements Serializable
{
static int anz_autos = 0;
static final int AUTO_MAX = 50;
static Auto[] auto_liste = new Auto[AUTO_MAX];
public static void main(String[] argument)
{
boolean ende = false;
do
{
// erstmal das Menue ausgeben
System.out.println("\nCarControl - die "+"objektorientierte Fahrzeugverwaltung");
System.out.println("=========================="+"============================");
System.out.println("\nHauptmenue");
System.out.println("\n(1) Autos anzeigen");
System.out.println("(2) Neues Auto");
System.out.println("(3) Auto verleihen");
System.out.println("(4) Autos entfernen");
System.out.println("\n(0) Programm beenden");
try
{
//versuchen, die Benutzereingabe zu lesen
System.out.println("\nAuswahl: ");
Scanner eingabe = new Scanner(System.in);
short auswahl = eingabe.nextShort();
//Benutzereingabe verarbeiten
switch (auswahl)
{
case 1:
liste_anzeigen(anz_autos);
//for (int i=0; i < anz_autos; i++)
//auto_liste[i].anzeigen();
break;
case 2:
anz_autos = neues_auto(anz_autos);
if (anz_autos < AUTO_MAX && anz_autos >=0)
anz_autos = neues_auto(anz_autos);
else System.out.println("Die Autoliste ist voll!");
break;
case 3:
if (auto_liste[auto_wahl(anz_autos)].verleihen())
System.out.println("OK");
else
System.out.println("Auto bereits verliehen!");
break;
case 4:
if (auto_liste[auto_wahl(anz_autos)].entleihen())
System.out.println("OK");
else
System.out.println("Auto nicht verliehen");
break;
case 0:
System.out.println("\nBis bald...");
ende = true;
break;
default:
System.out.println("\nFalsche Auswahl!");
}
} catch (Exception e) // falsche Eingabe??
{
System.out.println("Nur ZAHLEN eingeben!");
}
} while (!ende);
}
static int neues_auto(int auto_nr)
{
System.out.println("\nNeues Auto eingeben");
System.out.println("=======================");
auto_liste[auto_nr] = new Auto();
while (!auto_liste[auto_nr].eingeben())
{
System.out.println("Fehlerhafte Eingabe!");
}
if (auto_nr + 1 > 1)
sortieren(auto_nr + 1);
System.out.println("Neues Auto angelegt.");
return (auto_nr + 1);
}
static void liste_anzeigen(int auto_nr)
{
System.out.println("\nAuto Liste");
System.out.println("==========\n");
for (int i=0; i < auto_nr; i++)
{
System.out.print((i+1)+") ");
System.out.println(auto_liste[i].list_eintrag());
}
}
static void sortieren(int auto_nr)
{
Auto puffer;
for (int lauf=0; lauf<auto_nr; lauf++)
for (int pos=0; pos<auto_nr-1; pos++)
if (auto_liste[pos].list_eintrag().compareTo (auto_liste[pos+1].list_eintrag())>0)
{
puffer = auto_liste[pos];
auto_liste[pos] = auto_liste[pos+1];
auto_liste[pos+1] = puffer;
}
}
static int auto_wahl(int auto_nr)
{
boolean ende = false;
short auswahl = 0;
do
{
liste_anzeigen(auto_nr);
try
{
System.out.print("\nAuswahl: ");
Scanner eingabe = new Scanner(System.in);
auswahl = eingabe.nextShort();
if (auswahl > 0 && auswahl <= auto_nr)
ende = true;
else
System.out.println("Ungueltige Auswahl!");
} catch (Exception e)
{
System.out.println("Eine ZAHL eingeben!");
}
} while (!ende);
return (auswahl-1);
FileOutputStream dat = null;
ObjectOutputStream out = null;
auto_liste[auto_nr] = new Auto();
try
{
dat = new FileOutputStream("datei.dat");
out = new ObjectOutputStream(dat);
out.writeObject(auto_liste[auto_nr]);
auto_liste[auto_nr].eingeben();
} catch (IOException e){e.printStackTrace();}
finally{
if (out!=null)try{out.close();}catch(Exception e2){};
}
FileInputStream dat1 = null;
ObjectInputStream in = null;
try
{
dat1 = new FileInputStream("datei.dat");
in = new ObjectInputStream(dat1);
Auto = (auto_liste[auto_nr]) in.readObject();
liste_anzeigen(anz_autos);
} catch (IOException e){e.printStackTrace();}
finally{
if (in!=null)try{in.close();}catch(Exception e2){};
}
}
}
Vielen Dank für die Hilfe
J.