Java Treemap Daten ausgeben FEHLER

hoelle1985

Grünschnabel
Hey @ all!

Nach knapp 4 Stunden verzweiflung bitte ich nuneuch um Hilfe!

Mein Telefonbuch läuft eigentlich ohne Probleme! Bis auf die Ausgabe aller Eintrag aus der Treemap!

Ich bekomme immer den Fehler "cannot be cast to Eintrag"! Das Übersetzten funktioniert!!Erst in der Konsole gibt es den Fehler!

Vielleicht findet von euch einer den Fehler!

Danke für eure Hilfe

Klasse Telefonbuch
Code:
public class Telefonbuch
{
  // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen

    public Telefonbuch()
  {
      
  }
  public static void main( String[] args )
  {
      Benutzerschnittstelle neu = new Benutzerschnittstelle();
      neu.willkommen();
  }

}

Klasse Eintrag
Code:
import java.util.*;
import java.io.*;

public class Eintrag implements Serializable
{
  String name;
  String nummer;
  String strasse;
  String ort;
    public Eintrag()
    {
        
    }
    public void setze(String name, String nummer, String strasse, String ort)
    {
      this.name=name;
      this.nummer=nummer;
      this.strasse=strasse;
      this.ort=ort;
    }
    public void gibEintrag()
    {
        System.out.println(" Name: " +name+" Nummer: " +nummer+" Strasse: "+strasse+" Ort: "+ort);
    }
    
}

Klasse Benutzerschnittstelle

Code:
import java.util.*;
import java.io.*;

/**
 * Beschreiben Sie hier die Klasse telefonbuch.
 * 
 * @author (Ihr Name) 
 * @version (eine Versionsnummer oder ein Datum)
 */
public class Benutzerschnittstelle
{
  // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen
    
      String name;
      String nummer;
      String ausg;
      String keya;
      String nummera;
      String strassea;
      String orta;
      Telefonspeicher buch;


  /**
   * Konstruktor für Objekte der Klasse telefonbuch
   */
  public Benutzerschnittstelle()
  {
      buch = new Telefonspeicher();
      buch.datenLesen();
  }

  /**
   * Ein Beispiel einer Methode - ersetzen Sie diesen Kommentar mit Ihrem eigenen
   * 
   * @param  y  ein Beispielparameter für eine Methode
   * @return    die Summe aus x und y
   */
  
  public void willkommen()
  {  
      System.out.println ("\n\nHerzlich Willkommen im elektronischen Telefonbuch");
      System.out.println ("Bitte wählen sie aus");
      System.out.println ("n = neuer Eintrag");
      System.out.println ("l = Eintrag loeschen");
      System.out.println ("d = Eintrag suchen");
      System.out.println ("a = Eintrag aendern");
      System.out.println ("t = Telefonbuch speichern");
      System.out.println ("z = Alle Eintraege ausgeben");
      System.out.println ("e = Beenden\n\n");
      Scanner s = new Scanner(System.in);
      String key = s.nextLine();
                        
      if(key.equals("n")){
        System.out.println ("Neuer Eintrag");
        System.out.println ("Name:");
        keya = s.nextLine();
        System.out.println ("Nummer:");
        nummera = s.nextLine();
        System.out.println ("Strasse:");
        strassea = s.nextLine();
        System.out.println ("Ort:");
        orta = s.nextLine();
        buch.neuerEintrag(keya,nummera,strassea,orta);
        System.out.println ("Eintrag erfolgreich gespeichert");
        willkommen();

      }
           if(key.equals("l")){
        System.out.println ("Eintrag loeschen");
        System.out.println ("Name:");
        keya = s.nextLine(); 
        buch.loeschen(keya);
        System.out.println ("Eintrag "+ name +" wurde gelöscht");
        willkommen();
        
        
      }      
                 
           if(key.equals("d")){
        System.out.println ("Eintrag suchen");
        System.out.println ("Name:");
        keya = s.nextLine();
        buch.suchen(keya);
        willkommen();
        
        
      }

           if(key.equals("a")){
        System.out.println ("Eintrag aendern");
        System.out.println ("Welcher Eintrag soll geändert werden?:");
        keya = s.nextLine();
        buch.loeschen(keya);        
        System.out.println ("Neuer Name:");
        keya = s.nextLine();
        System.out.println ("Neue Nummer:");
        nummera = s.nextLine();
        System.out.println ("Strasse:");
        strassea = s.nextLine();
        System.out.println ("Ort:");
        orta = s.nextLine();
        buch.neuerEintrag(keya,nummera,strassea,orta);
        System.out.println ("Eintrag geändert!");
        willkommen();
        
    }
        if(key.equals("z")){
         buch.ausgabe2();
         willkommen();
         
      }
      if(key.equals("t")){
        buch.datenSpeichern();
        willkommen();
        
        }
      if(key.equals("e")){
        buch.datenSpeichern();
        System.out.println ("Telefonbuch gespeichert und verlassen");
        
        }
      }
      
        
        
         

     
    }

Klasse Telefonspeicher

Code:
import java.util.*;
import java.io.*;

public class Telefonspeicher 
{
  TreeMap <String, Eintrag> speicher;
  String nameb;
  String nummerb;
  String strasseb;
  String ortb;
  
  /**
   * Konstruktor für Objekte der Klasse telefonspeicher
   */
  public Telefonspeicher()
  {
    speicher = new TreeMap<String, Eintrag>(String.CASE_INSENSITIVE_ORDER);

  }

  public void neuerEintrag(String keya,String nummera,String strassea,String orta)
  {
     Eintrag neuereintrag= new Eintrag();
     neuereintrag.setze(keya,nummera,strassea,orta);
     speicher.put(keya,neuereintrag);
    }
  public void suchen(String key)
  {
        Eintrag s= speicher.get(key);
        s.gibEintrag();
  }
  
  
  public void ausgabe2()
   {
       SortedMap <String,Eintrag> sot= speicher.tailMap("A");
  
      
       Set a = sot.keySet();
       String[] d = (String[])(a.toArray(new String[0]));
       for(String k : d)
       {
       
       Eintrag w = speicher.get(k);
       w.gibEintrag();
       
    }
    
    }
  
    public void loeschen(String key)
  {
    speicher.remove(key);
  }
   
    public void datenSpeichern(){
        try{
           FileOutputStream fs = new FileOutputStream("save.ser");
           ObjectOutputStream os = new ObjectOutputStream(fs); 
           os.writeObject(speicher);
           os.close();
        }
           catch (IOException e){
               System.err.println(e.toString());
           }  
    }
    
     public void datenLesen(){
        try{
            FileInputStream fs = new FileInputStream("save.ser");
            ObjectInputStream is = new ObjectInputStream(fs);
            speicher = (TreeMap<String,Eintrag>) is .readObject();
            is.close();
        }
        catch (ClassNotFoundException e){
            System.err.println(e.toString());
        }
        catch (IOException e){
            System.err.println(e.toString());
        }        
    }
    

     
}
 
Hallo,

könntest du bitte mal die komplette Exception posten?

Also ich hab es bei mir getestet und es hat funktioniert.

MFG

Sascha
 
Es ist unfassbar! Gestern in der FH immer Exceptions gehabt! Gerade einmal zuhause neu in Bluej eingefügt und das ding funktioniert!

Sorry!
 
Zurück