Wörter in umgekehrter Reihe sortieren

Razorhawk

Webdesigner und MSP
Ich habe hier eine Aufgabe, die ich lösen muss, aber ich habe gerade keinen Schimmer was sie von mir wollen oder besser auf welche Art ich das programmieren soll.

Ich hoffe es kann mir jemand helfen:

#############################


Definieren Sie eine Klasse InverseComparator, mit deren Hilfe im folgenden Programm die
Argumente in umgekehrter lexikographischer Reihenfolge ausgegeben werden:
Code:
class InterfaceDemo{

public static void main(String args[]){

          java.util.Arrays.sort(args, new InverseComparator());
          for (int i = 0; i < args.length; i++)
                     System.out.println(args[i]);
          }
}

}
 
Hmm, hab lange nicht mehr mit Java programmiert, deswegen kann ich dir nur raten, das hier mal im Java-Forum zu posten. ;)
Oder guck in deiner Java-Referenz nach "Comparatoren" und wie man davon Klassen ableiten kann. Der Algorithmus dürfte ja nicht das Prob sein.
 
Mhmm... Drück mal F1 und guck was Max dazu sagt :)

Aber mal im Ernst:

Für mich als Java unkundigen, aber des Programmierens doch mächtig, scheinst Du ein Argument eines beliebigen Datentyps reinzubekommen (höchstwahrscheinlich string) und diesen dann Schritt für Schritt auszugeben. Das Argument sollst Du nach den den von Dir bekommenen Bedingungen in einer Klasse umstellen lassen, so das die Bedingung der "lexikographischen" Reihenfolge stimmt.

HTH

Navy
 
So ungefähr, wenn man ein Programm mit der guten alten Konsole startet, kann man Parameter übergeben z.B. 3dmax.exe -?. Die werden bei einem Java-Programm im Parameter "args" (Array von Strings) der "main"-Methode gespeichert. Diesen Array und eine Instanz der Klasse "InverseComparator" wird der Methode "java.util.Arrays.sort" übergeben. Danach sind die Wörter in "args" in umgekehrter lexikographischer Reihenfolge und werden mit
Code:
for (int i = 0; i < args.length; i++) System.out.println(args[i]);
am Bildschirm ausgegeben.
Soweit zur Aufgabenstellung. Wie das jetzt mit der Klasse "InverseComperator" im Zusammenhang mit dem Methodenaufruf von "java.util.Arrays.sort" genau funktioniert, kann man dir sicher im Java-Forum sagen.
 
Zuletzt bearbeitet:
Kann mir einer sagen, warum ich das ins 3dmax forum gepostet habe? o_O

Das sollte eigentlich ins Javaforum... muss mich wohl mächtig vertan haben.
Kann das mal ein Moderator verschieben danke! :)

Trotzdem danke für die Antworten! Auch wenn die Frage hier absolut nicht reinpasst :)
Aber mir geht es eher darum, was die Klasse mit dem Array sort Befehl zu tun hat... wie ich damit umgehen soll.
Was der Algorithmus von mir verlangt im allgemeinen ist wirklich nicht schwer zu erkennen ;)
 
Kann mir einer sagen, warum ich das ins 3dmax forum gepostet habe? o_O
Macht der Gewohnheit!

Die Klasse soll angeben, wie die Wörter geordnet werden. Sie muss abgeleitet werden von der Klasse/Schnittstelle "Comparator", die oft eingesetzt wird, wenn man variable Vergleichsmöglichkeiten bieten will, wie eben bei der Sort-Methode. Du musst 2 Methoden definieren:
Code:
int compare(Object o1, Object o2)
   - ist neg, wenn o1 kleiner als o2 ist
     ist 0, wenn beide gleich sind
     ist pos, wenn o1 größer als o2 ist

boolean equals(Object obj)
  - Zeigt an, ob das Objekt obj mit diesem Comparator äquivalent ist.

Bei der 2. musst du noch ein bissel was beachten, guck dazu am besten mal in ne Java Referenz.

mfg wasted time
 
> Aber mir geht es eher darum, was die Klasse mit dem Array sort Befehl zu tun hat... wie
> ich damit umgehen soll.
> Was der Algorithmus von mir verlangt im allgemeinen ist wirklich nicht schwer zu erkennen

Du kannst einen string auch als array von character ansehen. Das bringt dir 2 Vorteile:
- Du hast Indizes für den direkten Positionszugriff und mußt nicht lange suchen
- Du kannst für 2 Symbole in einem definiert sortierten Universum recht einfach ein
Relationszeichen setzen ohne parsen zu müssen

Für array eignet sich eigentlich immer Quicksort (sofern Rekursion nicht unerwünscht ist)

Navy
 
Schau mal da:

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#compareTo(java.lang.String)

In Deinem Comparator musst Du dieses Ergebnis dann einfach mit -1 multiplizieren und dann beim sortieren angeben.
 
Danke für die Antworten, aber ich versteh noch nicht ganz wie die Klasse InversComparator mit dem String args kommuniezieren soll, wenn gar kein String übergeben wird an diese Klasse.
Ich muss doch in dieser Klasse mindestens einen String haben um vergleiche ausführen zu können.
Wie hängt das zusammen? InversComparator soll ja schließlich keine Eingabeparameter haben.

Muss ich die Methoden rekursiv definieren?
Muss ich dazu Listen verwenden oder ist es anders günstiger?
 
Der Comparator definiert nur wie sich die Objekte (in dem Fall Strings) zueinander verhalten. Also wann sind Objekte gleich, größer oder kleiner. Damit ist also nur das Sortierkriterium definiert.

Sortiert werden die Strings dann zum Beispiel durch Array.sort - http://java.sun.com/j2se/1.5.0/docs/api/java/util/Arrays.html#sort(T[],%20java.util.Comparator)

Das gleiche geht auch mit z.Bsp. Collections.
 
Zurück