Strings sortieren

walter911

Mitglied
Hallo,

ich habe 3 Bücher. Ein Buch setzt sich zusammen aus Titel, Autor, ISBN und Preis.

dann soll durch einen inputdialog eingebgeben werden wonach sortiert werden soll. 1 für Titel, 2 für Autor, 3 für ISBN und 4 für Preis.

danach soll durch einen inputdialog eingegeben wonach sortiert werden soll. 1 für aufsteigend und 2 für absteigend.

Wie kann ich das am besten lösen?

Buch1.titel
Buch1.autor
Buch1.isbn
Buch1.preis
sind die Variablen. Bei den anderen beiden Büchern steht anstatt der 1 halt eine 2 bzw. 3

Der erste input Dialog gibt ja Werte von 1-4 zurück.
Das ich da if derersteinputdialog.equals("1") ... machn könnte weiß ich noch aber ich hab keine Ahnung wie ich das jetzt sortieren kann.
 

walter911

Mitglied
Danke. Ich hab mir das jetzt mal genauer angeschaut und glaube auch, dass auf der seite java blog buch im Prinzip der Lösungsweg steht. Ich weiß aber immernoch nicht genau wie ich das jetzt für mein Beispiel verwenden kann :(
 

walter911

Mitglied
Hallo,
kann mir niemand genauer sagen was ich machen muss?

Ich bekomme es mittlerweile hin ein array zu erstellen und zu sortieren:
Java:
long[] liste3 = new long[]{Buch1.isbn, Buch2.isbn, Buch3.isbn};
Arrays.sort(liste3);
System.out.println(liste3);
allerdings bringt mir das ja nichts weil ich ja eine komplette Ausgabe brauche. Also buch1.name usw...
 
S

Spacerat

Gast
Bei mehreren Sortierkriterien eignet sich Comparable eigentlich gar nicht, da dieses Interface innerhalb der zu vergleichenden Objekte plaziert werden muss, wodurch man keine Suchkriterien mehr ändern kann. Besser ist es, pro Sortierkriterium einen Comparator zu kreieren, eine Collection aller Buch-Instanzen (z.B. [c]List<Book>[/c]) zu erstellen und diese dann mit einem der kreierten Comparatoren zu sortieren:
Java:
Collections.sort(list, ISBNComparator);
Collections.sort(list, TitleComparator);
Collections.sort(list, AuthorComparator);
Collections.sort(list, PriceComparator);
Wenn die Klasse Buch dann auch noch [c]toString()[/c] überschreibt kann sie bequem wie folgt ausgegeben werden
Java:
for(Book b : list) {
  System.out.println(b.toString());
}
 

walter911

Mitglied
ich bekomme das so noch nicht hin.
Ich kann es aber etwas vereinfachen.
Laut Aufgabenstellung muss bei der Sortierung nur der Name des Buchs angegeben werden.


für den Fall das man nach titel sortieren soll ist es ja sehr einfach:
Java:
String[] buchtitelarray = new String[] {Buch1.titel,Buch2.titel,Buch3.titel};
java.util.Arrays.sort(buchtitelarray);
if (sortierart.equals("1")) {
 
if (aufOderAbsteigend.equals("1")) {
System.out.println(buchtitelarray);}

Das Problem hier ist: Ich gebe dann ja ein Array aus. Dies wird ja soweit ich weiß aufsteigend sortiert. Wie geht es aber nun absteigend? ( Es wird halt eingegeben ob auf oder absteigend sortiert werden soll)
 
Zuletzt bearbeitet:
S

Spacerat

Gast
Habe auf die PN ja schon geantwortet...
Pack nicht nur die Buchtitel in das Array, sondern die gesammten Bücher...
Schreibe dir dann Compatatoren für die einzelnen Sortiervorgänge (jeweils einen für aufsteigend und einen für absteigend, du kommst dann auf 8), überschreibe in der Klasse Book die [c]toString()[/c]-Methode, verwende dann [c]Arrays.sort(buecher, comparator)[/c] und gib das ganze dann in dieser For-Schleife aus... Was ist so schwer daran?
Hier auch nochmal der Hinweis: http://www.java-forum.org/hausaufga...eim-erschleichen-loesungen-fuer-aufgaben.html
 

walter911

Mitglied
ok ich versuche es mal so.
Ich bekomme es allerdings nicht hin einen vernünftigen Comparator zu schreiben.
In den java blog buch .de was oben verlinkt ist steht z.b.

Java:
package de.jbb.cuc;
02	 
03	import java.util.Comparator;
04	 
05	public class BierComparator implements Comparator<Bier> {
06	 
07	  @Override
08	  public int compare(Bier b1, Bier b2) {
09	 
10	    if (b1.getInhalt() == b2.getInhalt()) {
11	      if (b1.getHerkunft().compareTo(b2.getHerkunft()) == 0) {
12	        return b1.getName().compareTo(b2.getName());
13	      }
14	      else {
15	        return b1.getHerkunft().compareTo(b2.getHerkunft());
16	      }
17	    }
18	    else if (b1.getInhalt() > b2.getInhalt()) {
19	      return -1;
20	    }
21	    else {
22	      return 1;
23	    }
24	  }
Dies ist ja ein Comparator für Biersorten. Allerdings nur für 3 und nicht für 4 und ich weiß nicht wie ich ihn um 1 erweitern kann da die Struktur so schon kompliziert aussieht
 

walter911

Mitglied
Ich sitzte jetzt schon die ganze Zeit dran aber egal was ich versuche es funktioniert nicht :(

Da ja egal nach welchen der 4 Kriterien sortiert werden soll nur der Buchname ausgegeben werden soll kann man es ja vllt auch etwas vereinfachen?

Ich hab jetzt erstmal über if anweisungen erreicht, dass wenn nach Buchname sortiert werden soll folgendes passiert:

Java:
String[] titelarray = new String[] {Buch1.titel, Buch2.titel, Buch3.titel};
java.util.Arrays.sort(titelarray);
if (sortieren.equals("1")) {
if (aufOderAbsteigend.equals("1")) {
System.out.println(titelarray);}

else if (aufOderAbsteigend.equals("2")){
System.out.println();}
}

aber nichtmal das funktioniert.
Ich dachte er sortiert dann die 3 Titel und gibt sie aus. Macht er aber nciht.
Das bringt mich zwar noch nicht zur endgültigen Lösung aber dann könnte ich es zumindest mal hinkriegen das ich nach einen der 4 Kriterien sortieren kann. Wäre zumindest schonmal ein kleiner Erfolg
 
Zuletzt bearbeitet:

walter911

Mitglied
Edit:

Ich hab in einen anderen Thema nochmal einfacher nach etwas gefragt und jetzt erstmal einen Lösungsansatz. Also ists hier erstmal ok
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Strings vergleichen & sortieren Java Basics - Anfänger-Themen 20
S Strings im Array nach Namen sortieren Java Basics - Anfänger-Themen 11
J Strings nach Teile sortieren Java Basics - Anfänger-Themen 4
T Strings mit compareto vergleichen und array sortieren Java Basics - Anfänger-Themen 14
F Zwei Strings synchron sortieren Java Basics - Anfänger-Themen 8
B Strings alphabentisch sortieren mit Hilfe von insertion sort Java Basics - Anfänger-Themen 6
Bastie Strings nach häufigkeit sortieren -aber wie? Java Basics - Anfänger-Themen 10
R ArrayList nach Strings sortieren Java Basics - Anfänger-Themen 6
G Arrayliste mit Objekt anhand von Strings sortieren Java Basics - Anfänger-Themen 8
kulturfenster Array mit Strings sortieren Java Basics - Anfänger-Themen 7
C Strings sortieren Java Basics - Anfänger-Themen 7
K int-Werte und Strings sortieren Java Basics - Anfänger-Themen 18
M Sortieren eines Strings nach Alphabet Java Basics - Anfänger-Themen 4
W Gleichzeitiges ersetzen mehrerer Strings Java Basics - Anfänger-Themen 7
R Datentypen Das Verhalten von Strings als Datentypen Java Basics - Anfänger-Themen 7
N Nachkommastellen von Strings Java Basics - Anfänger-Themen 3
T Strings unveränderlich???? Java Basics - Anfänger-Themen 22
B Alle Strings bis zu einer Maimallänge aufzählen, die Bedingung erfüllen Java Basics - Anfänger-Themen 13
S Die durchschnittliche Länge der Strings Java Basics - Anfänger-Themen 11
M Operatoren Strings mit Vergleichsoperatoren, funktioniert das? Java Basics - Anfänger-Themen 9
S Variablen Letzte Zeile eines Strings entfernen Java Basics - Anfänger-Themen 1
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
P9cman Tipps für Rekursive Aufgaben mit Strings oder allgemein Java Basics - Anfänger-Themen 2
sserio StringBuilder und Strings Java Basics - Anfänger-Themen 8
J Größe eines Strings in Pixel Java Basics - Anfänger-Themen 18
schredder Strings und reguläre Ausdrücke - Methode mit return string.matches Java Basics - Anfänger-Themen 5
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
N Strings verpflechten Java Basics - Anfänger-Themen 4
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
L Strings aneinanderhängen Java Basics - Anfänger-Themen 2
M Strings vergleichen Java Basics - Anfänger-Themen 10
Nerdinfekt BMI Rechner, fehler beim Zurückgeben des Strings? Java Basics - Anfänger-Themen 2
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
S 2 Strings mit Equals vergleichen Java Basics - Anfänger-Themen 11
Q Besitzen zwei Strings identische Buchstaben, nur in anderer Reihenfolge? Java Basics - Anfänger-Themen 10
marcooooo Separator zwischen allen Zeichen eines Strings einfügen Java Basics - Anfänger-Themen 29
C Ternärer Operator mit Strings Java Basics - Anfänger-Themen 3
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
P Verketten, Aneinanderreihen von Strings Java Basics - Anfänger-Themen 2
M Strings mit gerader und ungerader Länge ausgeben Java Basics - Anfänger-Themen 10
J Alle Werte eines Strings zusammen addieren Java Basics - Anfänger-Themen 15
W Strings und das parsen Java Basics - Anfänger-Themen 8
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
D Vergleichen von Strings Java Basics - Anfänger-Themen 6
M Konkatenation von zwei Strings Java Basics - Anfänger-Themen 6
J Abbruchbedingung in Schleife/ Untersuchung von Strings Java Basics - Anfänger-Themen 2
S Buchstaben in Großbuchstaben (Strings) Java Basics - Anfänger-Themen 5
X Anagramm mit Strings und Methode Java Basics - Anfänger-Themen 53
P geschachtelte Schleife mit Strings Java Basics - Anfänger-Themen 2
P Strings mit der Axt zerteilen Java Basics - Anfänger-Themen 7
F Alle Zeichenkombinationen eines Strings iterativ herausfinden Java Basics - Anfänger-Themen 26
K Strings hochzählen Java Basics - Anfänger-Themen 20
J Strings untereinander in einer Liste vergleichen Java Basics - Anfänger-Themen 18
B Frage zu: String... strings -> Ungleiche Anzahl an Parameter? Java Basics - Anfänger-Themen 4
F Vergleiche mit charAt funktioniert bei Strings nicht, was tun? Java Basics - Anfänger-Themen 5
T Probleme mit Strings Java Basics - Anfänger-Themen 6
J Unveränderbarkeit von Strings Java Basics - Anfänger-Themen 3
O Klammerung bei Strings Java Basics - Anfänger-Themen 10
A Liste aus drei Strings erstellen Java Basics - Anfänger-Themen 5
N Zwei Strings mit "==" vergleichen warum TRUE Java Basics - Anfänger-Themen 2
G Teil(e) eines Strings entfernen wenn spezifische Zeichen (< & >) vorkommen Java Basics - Anfänger-Themen 5
D ergebnis.matches("[1-9]?[0-9].[0-9][0-9]?") ein teil eines größeren Strings Java Basics - Anfänger-Themen 12
J Breite eines Strings bestimmen Java Basics - Anfänger-Themen 4
D Zwei Strings sind gleich bei if aber nicht true Java Basics - Anfänger-Themen 2
F JList Elemente mit Strings vergleichen Java Basics - Anfänger-Themen 12
J Strings sind gleich werden aber ungleich ausgewertet Java Basics - Anfänger-Themen 2
N Vergleich von Strings schlägt fehl.. Java Basics - Anfänger-Themen 5
B 4 Strings, Anfangsbuchstaben muss unterschiedlich sein Java Basics - Anfänger-Themen 12
P Strings in String Array schreiben Java Basics - Anfänger-Themen 13
J Input/Output Strings aneinander reihen mit while schleife Java Basics - Anfänger-Themen 25
B mir nur die Gesamtzahl von einzigartigen Strings aus Array ausgeben lassen Java Basics - Anfänger-Themen 5
R Erste Schritte Sicheres einlesen eines Strings Java Basics - Anfänger-Themen 2
F Maximale Länge eines Strings Java Basics - Anfänger-Themen 5
J Best Practice Datum Differenz aus zwei Strings ermitteln Java Basics - Anfänger-Themen 8
Jinnai4 Strings ersetzen Java Basics - Anfänger-Themen 9
R Übergeben eines Array Strings an einen Spinner Java Basics - Anfänger-Themen 4
L Rekursiv zwei Strings vergleichen Java Basics - Anfänger-Themen 3
L Prüfe, ob die im String Array enthaltenen Strings aufsteigend sind. Java Basics - Anfänger-Themen 19
J Algorithmus - Strings auf eigene Reihenfolge miteinander vergleichen Java Basics - Anfänger-Themen 4
DaCrazyJavaExpert Variablen Zahlen aus Strings auslesen Java Basics - Anfänger-Themen 4
C 2 Strings Java Basics - Anfänger-Themen 15
T befehle unterschiedlicher anzahl an strings wiedergeben Java Basics - Anfänger-Themen 2
JavaNewbie2.0 Strings in andere Klassen importieren. Java Basics - Anfänger-Themen 2
D BlueJ Java: Strings voneinander trennen Java Basics - Anfänger-Themen 11
javaerd Wie kann ich Brute Force Methode mit Strings erweitern Java Basics - Anfänger-Themen 1
R Erste Schritte Strings "einrücken" Java Basics - Anfänger-Themen 3
Yamie ArrayList<Object> als Liste von Strings ausgeben? Java Basics - Anfänger-Themen 15
B gemeinsames Vorkommen der charactere von 2 Strings als String zurückgeben Java Basics - Anfänger-Themen 5
R Teilinhalt eines Strings testen Java Basics - Anfänger-Themen 10
H Erste Schritte JTree: Instanzen einer Klasse speichern oder Namen/Strings... Java Basics - Anfänger-Themen 4
L Werte von Strings ? Java Basics - Anfänger-Themen 1
L Strings und Arrays - Expand Java Basics - Anfänger-Themen 12
I Schachbrett aus beliebigen Strings erstellen Java Basics - Anfänger-Themen 3
Syncopated Pandemonium Verketten von Strings funktioniert nicht Java Basics - Anfänger-Themen 4
F Wahrscheinlichkeit von Strings Java Basics - Anfänger-Themen 3
MiMa Splitten eines Strings Java Basics - Anfänger-Themen 5
T Hashfunktion für Strings Java Basics - Anfänger-Themen 3
C Zeilenumbruch für langes Strings Java Basics - Anfänger-Themen 2
J Variablen Strings mit Zeilenumbrüchen in neues Array Element Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben