Hallo ich habe ein Problem. Die Aufgabe lautet wiefolgt:
Es ist ein Programm vorgegeben, das zuerst Worte in eine Liste einfügt, dann die Worte in der Liste nach der Anzahl ihrer Vokale aufsteigend sortieren soll und zuletzt den sortierten Inhalt der Liste auf dem Bildschirm ausgibt.
Leider ist das Programm unvollständig.
Erweitern Sie das vorgegebene Programm um eine Klasse Wort, die ein Wort darstellen soll. Die
Klasse Wort soll das Interface Comparable implementieren, damit man Objekte der Klasse Wort
vergleichen und sortieren kann. Beachten Sie bei der Implementierung der Methode public int
compareTo(Wort o), dass die Objekte der Länge nach aufsteigend sortiert werden sollen. Des
Weiteren muss die Klasse Wort die Methode public String toString() überschreiben, damit
die Ausgabe des Listeninhaltes auf dem Bildschirm funktioniert. Weitere notwendige Attribute und
Methoden (bzw. Konstruktoren) können Sie in die Klasse Wort einfügen.
das ist der gegebene Code:
Das ist die angesprochene Klasse Wort die ich selber geschrieben habe:
als ausgabe bekomme ich:
[sollen, der, nach, sortiert, werden., Worte, Diese, Laenge]
statt:
[der, nach, Worte, sollen, werden., Laenge, Diese, sortiert]
wo liegt mein Fehler? Brauche schnelle Hilfe, denn abgabe ist in 30 minuten und ich sitze schon fast 4 Stunden erfolglos an dieser Aufgabe...
Es ist ein Programm vorgegeben, das zuerst Worte in eine Liste einfügt, dann die Worte in der Liste nach der Anzahl ihrer Vokale aufsteigend sortieren soll und zuletzt den sortierten Inhalt der Liste auf dem Bildschirm ausgibt.
Leider ist das Programm unvollständig.
Erweitern Sie das vorgegebene Programm um eine Klasse Wort, die ein Wort darstellen soll. Die
Klasse Wort soll das Interface Comparable implementieren, damit man Objekte der Klasse Wort
vergleichen und sortieren kann. Beachten Sie bei der Implementierung der Methode public int
compareTo(Wort o), dass die Objekte der Länge nach aufsteigend sortiert werden sollen. Des
Weiteren muss die Klasse Wort die Methode public String toString() überschreiben, damit
die Ausgabe des Listeninhaltes auf dem Bildschirm funktioniert. Weitere notwendige Attribute und
Methoden (bzw. Konstruktoren) können Sie in die Klasse Wort einfügen.
das ist der gegebene Code:
Java:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class WoerterMain {
public static void main(String[] args) {
List<Wort> liste = new ArrayList<Wort>();
liste.add(new Wort("Diese"));
liste.add(new Wort("Worte"));
liste.add(new Wort("sollen"));
liste.add(new Wort("der"));
liste.add(new Wort("Laenge"));
liste.add(new Wort("nach"));
liste.add(new Wort("sortiert"));
liste.add(new Wort("werden."));
Collections.sort(liste);
System.out.println(liste);
}
}
Das ist die angesprochene Klasse Wort die ich selber geschrieben habe:
Java:
import java.util.Collections;
import java.util.List;
public class Wort implements Comparable<Wort>{
public String vergleichswort;
public int vergleich;
public int zurueck;
public Wort(String Wort) {
this.vergleichswort = Wort;
}
public int compareTo(Wort o){
vergleich=0;
for(int i = 0; i < vergleichswort.length(); i++) {
vergleich=0;
char c = vergleichswort.charAt(i);
if (c=='a')vergleich+=1;
else if (c=='e') vergleich+=1;
else if (c=='i') vergleich+=1;
else if (c=='o') vergleich+=1;
else if (c=='u') vergleich+=1;
else if (c=='A') vergleich+=1;
else if (c=='E') vergleich+=1;
else if (c=='I') vergleich+=1;
else if (c=='O') vergleich+=1;
else if (c=='U') vergleich+=1;
}
if (o.vergleich < this.vergleich){
return zurueck=1; } else
if (o.vergleich > this.vergleich){
return zurueck=-1;}
if (o.vergleich == this.vergleich){
return zurueck=0;}
return zurueck;
}
public String toString(){
return this.vergleichswort;
}
}
als ausgabe bekomme ich:
[sollen, der, nach, sortiert, werden., Worte, Diese, Laenge]
statt:
[der, nach, Worte, sollen, werden., Laenge, Diese, sortiert]
wo liegt mein Fehler? Brauche schnelle Hilfe, denn abgabe ist in 30 minuten und ich sitze schon fast 4 Stunden erfolglos an dieser Aufgabe...