Probleme mit StringTokenizer oder Stringvergleich



  • Hallo alle zusammen!

    Ich verstehe das nicht! Folgender Ausschnitt aus meinem Quelltext:

    String eingabeZeile = "";
       boolean weiter = true;
    
       while (weiter)
       { 
       try {
         eingabeZeile = eingabestrom.readLine();
         }
         catch (IOException e)
         {
           System.out.print("IOException beendet while()-schleife!");
           weiter = false;
         }
         //if (eingabeZeile == null ) break;
         StringTokenizer st1 = new StringTokenizer(eingabeZeile);
         while(st1.hasMoreTokens())
         { 
           String next = st1.nextToken();
           if (next == "Test") {System.out.print("DRIN"); weiter = false; break;}
              else System.out.print(next + " ");
         }
         System.out.println("");
       }
    

    Ich lese die eigene Quelldatei ein und die Ausgabe soll abbrechen, wenn der Token "Test" gefunden wurde. Er bricht aber nie ab und läuft auch nie in die Schleife, in der ich "DRIN" ausgebe. Auch nicht, wenn ich z.B. '// Test' irgendwo einfüge. Kann mir einer sagen, warum???

    Großen Dank an alle Helfenden! 🙂



  • Hiho,

    In der if-Anweisung vergleichst du nicht den INHALT der 2 Strings auf Gleichheit, sondern vergleichst 2 Adressen. Da das 2 verschiedene Objekte sind, stimmen die selbst dann nicht überein, wenn im String das selbe steht.
    Beispiel:

    String s1 = new String("hi");
    String s2 = new String("hi");
    
    if( s1 == s2 )   // ergibt false; es werden die Adressen verglichen
    

    Du musst zum Vergleichen von Strings die Methode equals benutzen.
    Also:

    if(next.equals("Test")) // usw
    

    flo



  • Das klingt logisch. Warum fällt mir sowas nicht ein. *g*

    Werds gleich mal umsetzen.

    Vielen Dank Flo.


Log in to reply