TreeSet und StringTokenizer

  • Themenstarter Themenstarter Sue
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
S

Sue

Gast
Folgende Aufgabe ist zu realisieren:

Wortliste
Lernziel: Collections kennenlernen.
Schreiben Sie eine Methode public static Set wordList(String in), die ein Set-Objekt zurückgibt, das die Worte des Strings in in alphabetischer Reihenfolge enthält.
Lösungshinweis: Verwenden Sie dafür einen TreeSet und Ihr Wissen über StringTokenizer.

Bei meinem bisherigen Quellcode (s. unten) wird allerdings immer 'missing a return statement' angezeigt, obwohl return vorhanden ist.



Code:
 public static Set wordList (String in)
          {
               TreeSet s = new TreeSet();

               s.add (in);

               Iterator it = s.iterator();
               while (it.hasNext())

               return (Set) it.next();
          }



Über jede Hilfe wäre ich sehr dankbar!

MfG Susann
 
Hi,

du fügst nur den String an sich ins TreeSet ein, d.h. dein Set hat nur ein Element, und zwar den String -> nichts wird alphabetisch sortiert...

laut aufgabe müsstest du den String per StringTokenizer splitten und die einzelnen Elemente ins TreeSet einfügen... dann einfach das gesamte TreeSet zurückgeben (einen Iterator brauchst du nicht)
 
Hier nun mein neuer Quellcode:

Code:
public static Set wordList (String in)
   {
       TreeSet set = new TreeSet();
       StringTokenizer st = new StringTokenizer (in);
       for (int i = 0; st.hasMoreTokens(); i++)
           set.add(st.nextToken());
       
      System.out.println (set);
      return set;
   }

Es funktioniert jetzt, allerdings werden die einzelnen Wörter durch Kommas getrennt auf dem Bildschirm ausgegeben und am Anfang und Ende steht jeweils eine eckige Klammer.

Wie kann ich erreichen, dass die Wörter durch Leerzeichen getrennt werden und ohne diese Klammern?

MfG Sue
 
du gibst das TreeSet direkt aus und das hat als toString methode (die dafür zuständig ist, wie ein Objekt ausgeschrieben wird) eben dieses Format.

D.h. du müsstest nochmal per Iterator über dein Set gehen und jeden Eintrag selber ausgeben bzw. so wie du es willst
 
So?

Code:
public static Set wordList (String in)
   {
       TreeSet set = new TreeSet();
       StringTokenizer st = new StringTokenizer (in);
       for (int i = 0; st.hasMoreTokens(); i++)
           set.add(st.nextToken());
           
       Iterator it = set.iterator();
       while (it.hasNext())
       {
           System.out.print ((String)it.next());
       }
       
      return set;
   }

Auf diese Weise kann ich die Token auch untereinander ausgeben lassen.
 
du kannst ihn auch gleich mittels tokenizer ausgeben lassen!

Code:
public static Set wordList (String in)
   {
       TreeSet set = new TreeSet();
       StringTokenizer st = new StringTokenizer (in);
       String strTmp = "";
       for (strTmp = st.nextToken(); st.hasMoreTokens(); strTmp = st.nextToken())
       {
           System.out.println(strTmp);
           set.add(strTmp);
       }

           
      return set;
   }

aber so wie du es gemacht hast geht es natürlich auch!
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben