Serialisieren-deserialisieren

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.
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.
 

AmunRa

Gesperrter Benutzer
aber es funktioniert nicht.

Das ist immer die beste Information die in einem Forum benötigt wird. Na klar funktionierts nicht weil sonst würdest du wohl nicht fragen.

Interessant wäre aber was nicht funktiniert? Bekommst du eine Exception? oder was soll das Programm machen?
 

chalkbag

Bekanntes Mitglied
Auch wenn ich den Code nur überflogen hab,

aber erstell mal eine nicht statische Klasse Auto in Minimalausfertigung

z.b.

Java:
class Auto implements serializable{

private String name;

public Auto(String name){
    this.name = name;
}

public String getName(){
    return this.name;
}
}

Und Versuch dieses Objekt zu schreiben und wieder zu lesen.

die ganze logik statisch in die Main Klasse / Methode zu stecken, ist vielleicht nicht ganz so optimal.

[Edit] Falls du Eclipse hast, drück mal bitte Ctrl+Shift+F bevor du Code posten willst
 
Zuletzt bearbeitet:

Eldorado

Bekanntes Mitglied
Ganzer Code, der aber nicht funktioniert...
Das ist ganz bestimmt nicht der komplette Code. Ich sehe zum Beispiel nirgendswo die Klasse "Auto". Wichtig ist, dass diese Klasse Serializable implementiert, sonst funktioniert es nicht. Aber warum implementiert "machine" Serializable ? (Klassen schreibt man Groß!!!)

Arbeitest du zufälligerweise mit BllueJ?
 
P

Pandabär

Gast
Danke für die Antworten, nein ich benutze einen texteditor und Konsole, wie aus dem Buch.
Bei der Funktion, das habe ich im ersten message erklärt, es sollten die Autos die man eingibt, gespeichert werden.

Danke
J.
 

Eldorado

Bekanntes Mitglied
auto_liste[auto_nr] = new Auto();
Du erzeugst hier ein Objekt der Klasse Auto, aber wir sehen in deinem Code nirgendswo "public class Auto{....}", uns fehlt die Klasse Auto. Das ist das erste was eine Fehlersuche uns ziemlich erschwert und zum anderen der ziemlich schwer zu lesende Code, da keine wirkliche Einrückung vorhanden ist.
 
P

Pandabär

Gast
Ach ja, sorry das sind die Dateien aus package, die sind mit implements serializable.

Java:
package fahrzeug;

import java.io.Serializable;
import java.io.*;
import java.util.Scanner;

public class Auto extends StrassenFzg implements Serializable

{
  
   public short  plaetze;
   
   public boolean eingeben()
  
{
     Scanner eingabe = new Scanner(System.in);
      try
{
        System.out.print("Bezeichnung: ");
        bez = eingabe.nextLine();
        System.out.print("Sitzplaetze: ");
        plaetze = eingabe.nextShort();
        System.out.print("Geschwindigkeit: ");
        geschw = eingabe.nextShort();
        return true;
}
        catch (Exception e)
{
        return false;
}
}
public final static int VK_KM = 50000;
public static int anz_autos = 0;
public Auto()
{
   anz_autos++;
}
public Auto(String k_bez, short k_geschw, short k_plaetze)
{
  bez     = k_bez;
  geschw  = k_geschw;
  plaetze = k_plaetze;
  anz_autos++;
}
public String list_eintrag()
{
  String text;
  text = bez+", "+plaetze+" Sitzplaetze, "+geschw+ " km/h Hoechstgeschwindigkeit";
  if (verliehen)
    text = text+" *";
  return text;
}
public boolean anzeigen()


{
  System.out.println("\nDas Auto ist ein "+bez);
  System.out.println("Es hat "+plaetze+" Sitze.");
  System.out.println("Der Top-Speed: "+geschw);
  if (verliehen)
    System.out.println("Es ist verliehen.");
  else
    System.out.println("Es ist nicht verliehen.");
  return true;
}
}

Java:
package fahrzeug;
import java.io.Serializable;
abstract class StrassenFzg implements Serializable
{
  protected String bez;
  protected short geschw;
  protected boolean verliehen;
  abstract boolean eingeben();
  abstract boolean anzeigen();
  public boolean entleihen()
{
     if (!verliehen)
          return false;
     else
{
        verliehen = false;
        return true;
}
}
  public boolean verleihen()
{
    if (verliehen) 
      return false;
    else
{
      verliehen = true;
      return true;
}
}
}

Vielen Dank
J.
 
P

Pandabär

Gast
Sieht ähnlich aus, kenne das mit externazible nicht.
Die Fehlermeldung lautet.

Java:
C:\Fahrzeuge>javac machine.java
machine.java:156: ';' expected
  Auto = (auto_liste[auto_nr]) in.readObject();
                              ^
1 error

Danke
J.
 
P

Pandabär

Gast
Ja stimmt, aber irgendwie bringt er weitere Fehlermeldungen.
Java:
C:\Fahrzeuge>javac machine.java
machine.java:156: cannot find symbol
symbol  : variable Auto
location: class machine
  Auto = (auto_liste[auto_nr]); in.readObject();
  ^
1 error

Der Semikolon in diesem Befehl, müsste doch nur einmal vorkommen, sonst weist er dies nicht mehr "in.readObject();" zu ?

Danke
J.
 

chalkbag

Bekanntes Mitglied
Nein, es sind ja zwei Befehle, auch wenn du diese ungünstig in eine Zeile schreibst.

Jetzt sollte wohl der Import für die Klasse Auto fehlen, also import package.auto;

Aber weil ich gerade wo anders darauf gestossen wurde.


Häufige Compiler-Meldungen, hilft dir sicherlich.

[Edit]
Wahrscheinlich willst du eher sowas damit ausdrücken?

Java:
Auto currentCar = (Auto) in.readObject();
auto_liste[auto_nr] = currentCar;
 
Zuletzt bearbeitet:

Eldorado

Bekanntes Mitglied
Auto = (auto_liste[auto_nr]) in.readObject();
Das ist komplett unsinnig.
Java:
Auto auto = (Auto)  in.readObject();
auto_liste[auto_nr] = auto;
oder halt
Java:
auto_liste[auto_nr] =  (Auto)  in.readObject();
Ich denke so war es gemeint. Ist aber in deinem Code wirklich schwierig zu durchzublicken.
 
P

Pandabär

Gast
Danke für den Link, werde ich mir genauer anschauen, ist hilfreich!

Vielleicht würde auch " auto_liste[auto_nr] = (Auto) in.readObject(); " , ok sein.

Die Fehlermeldung ist dann.

Java:
C:\Fahrzeuge>javac machine.java
machine.java:134: unreachable statement
FileOutputStream dat = null;
                 ^
machine.java:165: missing return statement
}
^
machine.java:156: unreported exception java.lang.ClassNotFoundException; must be
 caught or declared to be thrown
  Auto currentCar = (Auto) in.readObject();
                                        ^
3 errors

Naja sind basics, werde wohl noch mehr Java lernen müssen, vielleicht komme ich später auf den Fehler.

Vielen Dank
J.
 
P

Pandabär

Gast
Ok hier.

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_liste[auto_nr] = (Auto) in.readObject();
  liste_anzeigen(anz_autos);
  
} catch (IOException e){e.printStackTrace();}
finally{
            if (in!=null)try{in.close();}catch(Exception e2){};
        }

}
}

Vielen Dank
J.
 

Eldorado

Bekanntes Mitglied
Ich habe mir mal erlaubt, deinen Code einzurücken:
Java:
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_liste[auto_nr] = (Auto) in.readObject();
            liste_anzeigen(anz_autos);

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (Exception e2) {
                }
            };
        }

    }
}

Du sagst in Zeile 124
Code:
return (auswahl - 1);
und danach kommt noch Code, der wird aber wegen dem return nie ausgefüht. Daher kommt der Fehler. Ich denke, das Aus- und Einlesen gehört sowieso nicht in diese Methode...
 
P

Pandabär

Gast
Schon gut, wenn der Code so besser ist, dann ok.
Hoffe dass das noch irgendwie läuft, vielleicht.

Hm, sind die letzten zwei Schleifen nicht, die class-ende und main-ende ?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Interface Objekte speichern und laden (serialisieren/deserialisieren) Java Basics - Anfänger-Themen 1
F Input/Output Serialisieren/Deserialisieren Java Basics - Anfänger-Themen 18
D Serialisieren/deserialisieren Java Basics - Anfänger-Themen 37
R Objecte Serialisieren / Deserialisieren Java Basics - Anfänger-Themen 2
V Objekt serialisieren/Deserialisieren und per get verschicken Java Basics - Anfänger-Themen 5
J Serialisierung - Array-Objekt serialisieren/deserialisieren Java Basics - Anfänger-Themen 6
A Methoden Serialisieren Java Basics - Anfänger-Themen 17
J Serialisieren, aber wie? Java Basics - Anfänger-Themen 3
M Datum serialisieren Java Basics - Anfänger-Themen 1
M Serialisieren Java Basics - Anfänger-Themen 7
T Array serialisieren Java Basics - Anfänger-Themen 8
H Serialisieren Java Basics - Anfänger-Themen 9
E Serialisieren Java Basics - Anfänger-Themen 2
D Serialisieren, was bringt das? Java Basics - Anfänger-Themen 8
F Serialisieren Java Basics - Anfänger-Themen 35
K Serialisieren mit Progress Java Basics - Anfänger-Themen 2
S JFrame mit JTextPane serialisieren Java Basics - Anfänger-Themen 5
W Objekt (de-)serialisieren Java Basics - Anfänger-Themen 5
G Serialisieren mehrerer Objekte in EINE (XML)-Datei Java Basics - Anfänger-Themen 12
E ArrayList mit eigenen typ serialisieren? Java Basics - Anfänger-Themen 1
S Klassen Serialisieren Java Basics - Anfänger-Themen 5
V Serialisieren einer ShortMessage (javax.sound.midi) Java Basics - Anfänger-Themen 5
M Serialisieren beim Schließen des Progs sicher beenden Java Basics - Anfänger-Themen 4
H Datei nach serialisieren leer ? Java Basics - Anfänger-Themen 10
G static var serialisieren möglich? Java Basics - Anfänger-Themen 4
Lulumann6 Serialisieren? Java Basics - Anfänger-Themen 9
artur.cichosz Objekt als String serialisieren Java Basics - Anfänger-Themen 7
M Problem beim Serialisieren Java Basics - Anfänger-Themen 7
S Generics serialisieren? Java Basics - Anfänger-Themen 2
C LinkedList serialisieren? Java Basics - Anfänger-Themen 22
G Color und String serialisieren Java Basics - Anfänger-Themen 2
G alle Instanzen einer Klasse serialisieren Java Basics - Anfänger-Themen 4
C Mehrere Objekte in einer Liste einfügen und serialisieren Java Basics - Anfänger-Themen 1
S Vector serialisieren Java Basics - Anfänger-Themen 4
C Objekt serialisieren Java Basics - Anfänger-Themen 5
F Kann JSON nicht deserialisieren Java Basics - Anfänger-Themen 0
kaoZ Input/Output Android : Deserialisieren von mehreren Objekten in einer Datei Java Basics - Anfänger-Themen 0
O Objekt Listen serialisierung und deserialisieren Java Basics - Anfänger-Themen 5
H Datentypen Serialization... deserialisieren? Java Basics - Anfänger-Themen 4
S Deserialisieren auf sich selbst Java Basics - Anfänger-Themen 4
S Deserialisieren: alle Objekte ausgeben - wie mache ich das? Java Basics - Anfänger-Themen 2
G Problem beim Deserialisieren Java Basics - Anfänger-Themen 6
G Deserialisieren einer ArrayList Java Basics - Anfänger-Themen 2
R Abbruchbedingung readObject (deserialisieren) Java Basics - Anfänger-Themen 31

Ähnliche Java Themen

Neue Themen


Oben