Verständigungsfrage.

Status
Nicht offen für weitere Antworten.

babuschka

Top Contributor
Hi,

hmm ich habe eine aufgabe bekommen in der steht dass ich 2 Methoden schreiben soll um Sachen in eine Hashtabelle zu schreiben und zu lesen.
Die sollen put() und get() heißen.

die habe ich jetzt auch geschrieben. Allerdings ist die Aufgabe dass bei dem put() ein Objekt vom Typ Telefonbucheintrag entgegen genommen wird und bei dem get() ein Objekt vom Typ Telefonbucheintrag zurück gibt.

Mein Code sieht folgendermaßen aus:

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


class Telefonbuch{
    
    public static Hashtable telefonbuch = new Hashtable();
    
    private static void put(String name, String vorname, String telefonnummer,
                            String kategorie ){
        
        Telefonbucheintrag eintrag = new Telefonbucheintrag ( name, vorname, 
                                                              telefonnummer,
                                                              kategorie );
        
        telefonbuch.put(name, eintrag.toString());
        
    }
    
    private static String get(String name){
        
        return (String)telefonbuch.get(name);
        
    }
    
    private static void importDatei (String dateiName)throws IOException,
                                                      FileNotFoundException,
                                                      EOFException{
            
            Stream einlesen = new Stream (dateiName, Stream.READ);
            Stream zeilen = new Stream (dateiName, Stream.READ);
            String [] daten = new String [4];
            int counter = 0;
            
            try{
                for (int i=0; ; i++){
                    zeilen.readLine();
                    counter++;
                }
            }
            catch(EOFException e){
                System.out.println (+counter+" Zeilen gefunden!\n");
            }
            

            for (int i=0; i<counter; i++){
                daten = einlesen.readLine().split("\\s*;\\s*");
                put(daten[0],daten[1],daten[2],daten[3]);
            }

    }


    public static void main (String  [] args) throws IOException,
                                              FileNotFoundException{

        Stream datei = new Stream (System.in); 
        Stream eingabe = new Stream (System.in);
        boolean abfragenZuEnde = false;
        
        System.out.println("WICHTIG! Wenn die Dateiendung fehlt"+
                           " wird das Programm beendet!"+
                           "\nBitte geben Sie den Dateinamen ein: ");
        String dateiName = datei.readLine();
        
        try{
            importDatei(dateiName);
            
            while (!abfragenZuEnde){
                System.out.print("Name? (zum Beenden \"ende\" eintippen) "); 
                String name = eingabe.readLine();
                if (name.compareTo("ende") != 0){
                    if (telefonbuch.containsKey(name))
                        System.out.println(get(name)); 
                else
                    System.out.println("Kein Eintrag gefunden");
                }
                else abfragenZuEnde=true; 
            }
        }
        catch(FileNotFoundException fnf){
            System.out.println("Die Datei wurde nicht gefunden!");
        }
        catch(Exception e){
            System.out.println("Es ist ein Fehler aufgetreten, bitte starten"+
                               "Sie das Programm neu!");
        }
        
    }


}

Jetzt zu meiner Frage. Die Methode get() liefert die jetzt ein Objekt zurück (vom Typtelefonbuch eintrag?)? Eigentlich ist es ja ein String. Wie muss ich das umwandeln dass die Aufgabe erfüllt ist...
 
S

SlaterB

Gast
der String ist kein Telefonbucheintrag,
um das umzuwandeln musst du entweder aus dem String einzelnen Teile
(String name, String vorname, String telefonnummer, String kategorie)
rausholen und damit wieder ein Objekt erstellen:
Telefonbucheintrag eintrag = new Telefonbucheintrag ( name, vorname,
telefonnummer, kategorie );


oder einfacher: nicht den String sondern den eintrag in die HashMap einfügen,
dann hast du im get direkt den Eintrag bei der Hand!

Code:
private static void put(String name, String vorname, String telefonnummer,
                            String kategorie ){
       
        Telefonbucheintrag eintrag = new Telefonbucheintrag ( name, vorname,
                                                              telefonnummer,
                                                              kategorie );
       
        telefonbuch.put(name, eintrag);
       
    }
   
    private static Telefonbucheintrag get(String name){
       
        return (Telefonbucheintrag)telefonbuch.get(name);
       
    }

> Allerdings ist die Aufgabe dass bei dem put() ein Objekt vom Typ Telefonbucheintrag entgegen genommen wird

Code:
    private static void put(String name,  Telefonbucheintrag eintrag){
       
        telefonbuch.put(name, eintrag);
       
    }
   
    private static Telefonbucheintrag get(String name){
       
        return (Telefonbucheintrag)telefonbuch.get(name);
       
    }
 

babuschka

Top Contributor
Danke....

aber irgendwie klappt das nimmer....

was mach ich falsch?!

Java:
/**
* Datei: Telefonbuch.java
* @version: 1.0
* @author: ******** //Namen verdeckt
* Datum: 17.12.05
* Uebungsgruppe: 15
* Tutor: ******** //Namen verdeckt
*/

import javagently.*;
import java.io.*;
import java.util.*;

class Telefonbuch{
    
    /*Hashtable angelegt (absichtlich in der Form, da auf meinem PC nicht anders
     moeglich, trotz neuster Java Version) */
    public static Hashtable telefonbuch = new Hashtable();
    
    /**
    * Methode zur Eintragserstellung
    * @param name Der Name des Anzurufenden
    * @param vorname Der Vorname des Anzurufenden
    * @param telefonnummer Die Telefonnummer des Anzurufenden
    * @param kategorie Funktion an der Uni
    */    
    private static void put(String name, Telefonbucheintrag eintrag ){
        //schreibt die Uebergabe in eine Hashtable
        telefonbuch.put(name, eintrag);
        
    }
    
    /**
    * Methode zur Eintragsausgabe
    * @param name Der Name des Gesuchten
    * @return eintrag Ein Objekt vom Typ Telefonbucheintrag
    *                 (enthaelt die Daten der anzurufenden Person)
    */  
    private static Telefonbucheintrag get(String name){
        
        Telefonbucheintrag eintrag = (Telefonbucheintrag)telefonbuch.get(name);    
        return eintrag;
        
    }
    
    /**
    * Methode zum Auslesen der Datei und Uebergabe an put()
    * @param dateiName Name der Datei(incl. Anhang)
    */  
    private static void importDatei (String dateiName)throws IOException,
                                                      FileNotFoundException,
                                                      EOFException{
            //Stream für das Einlesen der Datei
            Stream einlesen = new Stream (dateiName, Stream.READ);
            //Stream für das Einlesen der Anzahl der Zeilen
            Stream zeilen = new Stream (dateiName, Stream.READ);
            //Array fuer die Uebergabe der Daten an die die put()
            String [] daten = new String [4];
            //Zaehlervar. zum Zaehlen der Zeilen
            int counter = 0;
            
            //Zeilen durchzaehlen
            try{
                for (int i=0; ; i++){
                    zeilen.readLine();
                    counter++;
                }
            }
            catch(EOFException e){
                System.out.println (+counter+" Eintraege gefunden!\n");
            }
            
            //Uebergabe jeder Zeile an die put()
            Telefonbucheintrag eintrag = new Telefonbucheintrag (String name, 
                                                 String vorname, 
                                                 String telefonnummer,
                                                 String kategorie);
            for (int i=0; i<counter; i++){
                daten = einlesen.readLine().split("\\s*;\\s*");
                eintrag(daten[0],daten[1],daten[2],daten[3]);
                put(daten [0], eintrag);
            }

    }

    /**
    * Main Methode
    */
    public static void main (String  [] args) throws IOException,
                                              FileNotFoundException{

        //Stream fuer die Eingabe des Dateinamen
        Stream datei = new Stream (System.in); 
        //Stream fuer die  Eingabe des Namen
        Stream eingabe = new Stream (System.in);
        boolean abfragenZuEnde = false;
        
        System.out.println("WICHTIG! Wenn die Dateiendung fehlt"+
                           " wird das Programm beendet!"+
                           "\nBitte geben Sie den Dateinamen ein: ");
        String dateiName = datei.readLine();
        
        try{
            importDatei(dateiName);
            
            while (!abfragenZuEnde){
                System.out.print("Name? (zum Beenden \"ende\" eintippen) "); 
                String name = eingabe.readLine();
                if (name.compareTo("ende") != 0){
                    if (telefonbuch.containsKey(name)){
                        System.out.println(get(name)); 
                    }
                    else{
                        System.out.println("Kein Eintrag gefunden");
                    }
                }
                else abfragenZuEnde=true; 
            }
        }
        catch(FileNotFoundException fnf){
            System.out.println("Die Datei wurde nicht gefunden!");
        }
        catch(Exception e){
            System.out.println("Es ist ein Fehler aufgetreten, bitte starten"+
                               "Sie das Programm neu!");
        }
        
    }
    
}

fehler:
Code:
D:\Eigene Dateien\Uni\Informatik\GP1\Programme\Telefonbuch.java:74: ')' expected

            Telefonbucheintrag eintrag = new Telefonbucheintrag (String name, 

                                                                        ^
 
Zuletzt bearbeitet von einem Moderator:
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben