[Java] String mit String aus Array-Element vergleichen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Inder, 4. Dezember 2008 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 4. Dezember 2008
    String mit String aus Array-Element vergleichen

    Ich habe folgendes Problem.

    Ich habe ein Array mit Kunden und Kundendaten. Ich möchte einen Namen eingeben und dann soll mir das Programm die Kundendaten des entsprechenden Kunden ausgeben.

    Wenn ich der Variable "name" im Quellcode einen Wert zuweise, dann sucht der im Array und gibt die entsprechenden Kundendaten aus.

    Wenn ich den gleichen Namen über die Console eingebe, dann wird der Wert auch der Variable zugewiesen, aber die Funktion arbeitet nicht wie sie soll und gibt "null" statt den Kundendaten aus.

    Ich habe nur leider gar keine Ahnung woran das liegen könnte.

    Code:
    
    import java.util.*;
    import java.util.regex.*;
    import java.text.*;
    
    public class Kundenverwaltung {
     public static void main (String args[])
     {
     
    
     //Kundendaten erstellen
     String [][] daten = {{"1","Mueller","Hans","Berlin"},{"4","Schmidt","Detlef","Hannover"},{"9","Meier","Peter","Dortmund"},{"3","Vogt","Thomas","Leipzig"}};
    
     
     System.out.println("Nach welchem Namen willst du suchen?");
     
    
     String name = "Vogt";//readString(); //<-- hier stimmt was nicht.
    
     String [] ergebnis = suche_kunde(name, daten);
     System.out.println("Suchergebnisse");
     System.out.println("");
     System.out.println("Kd-Nr.\t\tName\t\tVorname\t\tAdresse");
     System.out.println(ergebnis[0]+"\t\t"+ergebnis[1]+"\t\t"+ergebnis[2]+"\t\t"+ergebnis[3]);
     
     
     
     
     }
     
     /**Liest eine Zeile von der Konsole
     * @return Eingelesene Zeile vom Typ String.
     * @exception NoSuchElementException: Es wurde keine Eingabezeile gefunden.
     * @exception IllegalStateException: Die verwendete Methode ist nicht geöffnet.
     */
     public static String readString() 
     throws NoSuchElementException, IllegalStateException
     {
     Scanner sc = new Scanner(System.in);
     return sc.nextLine();
     }
    
     
    
    
     static String [] suche_kunde(String name, String [][] kunden_daten)
     {
     
     
     String [] suchergebnis = new String [4]; 
     
     for (int i=0;i<kunden_daten.length;i++)
     {
     if ((name == kunden_daten[i][1]) || (name == kunden_daten[i][2]))
     {
     suchergebnis = kunden_daten[i];
     }
     
     
     
     }
    
     System.out.println("Suchbegriff in der Funktion: " + name); //zum Test welchen Wert die Var in der Funktion hat
    
     return suchergebnis;
     }
    }
    
    
    
     
  2. 4. Dezember 2008
    AW: String mit String aus Array-Element vergleichen

    Hier liegt der Fehler begraben: Du machst einen ==-Vergleich. Du solltest die String.equals()-Methode verwenden!

    Unter Java wird für jeden String ein Objekt angelegt und alles wird auf einen Haufen geschmissen. Solang dein eingegebener Begriff (per Variable) schon im Haufen vorhanden ist, wird (glaub ich) auch einfach diese Referenz auf den String verwendet.
    -> Es funktioniert.

    Wenn du aber jetzt per Console das ganze einließt, wird ein neuer String (also auch eine neue Referenz auf diesen String) erzeugt.
    -> Es funktioniert nicht.

    Ich würde dir einfach mal folgende Zeile(n) raten:
    Code:
    if (
     (name.equals(kunden_daten[i][1])) 
     || (name.equals(kunden_daten[i][2]))
     )
    

    Erweiterung
    Des Weiteren würde ich dir raten, dass du - wenn der String nicht gefunden wurde - eine entsprechende Exception schmeißt. Schreib dir doch einfach eine StringNotFoundException, und wirf dieses Ding in diesem Fall aus. Wenn du einfach nur auf null vergleichst (um zu wissen, ob es gefunden wurde) ist das kein schöner OO-Stil.

    Hilft dir das?
    - - -
     
  3. 4. Dezember 2008
    AW: String mit String aus Array-Element vergleichen

    Strings werden mit .equals verglichen. Ansonsten seh ich da keine Fehler

    //Ach ...tolate
     
  4. 4. Dezember 2008
    AW: String mit String aus Array-Element vergleichen

    Ich danke dir. So funktioniert das. Das Problem ist, dass ich da so einen Lehrgang mache, der aufeinander aufbauende Kurse hat. Und deine gezeigt Funktion wurde noch nicht behandelt.

    Wenn ich das jetzt so einreiche, dann funktioniert das zwar, aber habe ich das auch mit den Mitteln gelöst, die ich können sollte?

    Gibt es eine andere Variante in dem Array nach Namen zu "suchen" und dann die entsprechenden Kundendaten ausgeben zu lassen?
     
  5. 4. Dezember 2008
    AW: String mit String aus Array-Element vergleichen

    Nein gibt es nicht.

    Es ist halt einfach so, dass Strings durch .equals verglichen werden sollten und Integer durch "=="
     
  6. 4. Dezember 2008
    AW: String mit String aus Array-Element vergleichen

    Ich danke dir. So funktioniert das. Das Problem ist, dass ich da so einen Lehrgang mache, der aufeinander aufbauende Kurse hat. Und deine gezeigt Funktion wurde noch nicht behandelt.

    Wenn ich das jetzt so einreiche, dann funktioniert das zwar, aber habe ich das auch mit den Mitteln gelöst, die ich können sollte?

    Gibt es eine andere Variante in dem Array nach Namen zu "suchen" und dann die entsprechenden Kundendaten ausgeben zu lassen?
     
  7. 4. Dezember 2008
    AW: String mit String aus Array-Element vergleichen

    Genau.
     
  8. 4. Dezember 2008
    AW: String mit String aus Array-Element vergleichen

    Ok danke. Dann werd ich das so einreichen und mal abwarten, was die sagen.

    Sorry für den Doppelpost da mittendrin, aber mein Firefox spackt grad rum.
     
  9. 4. Dezember 2008
    AW: String mit String aus Array-Element vergleichen

    Erledigt!?

    ~closed~

    Mfg,

    Kolazomai
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.