Schleife zur abfrage des preises und alphabetische abfrage des namen

Zeile 50:

Java:
String s = book.getTitle() + " - " + book.getArtist() + " - " + book.getISBN() + " - " + book.getPrice();

Diese Zeile erstellt den String, der ausgegeben wird.

Zuerst mal die Variablen, die angeben ob Name oder Author ausgegeben wird. (Am einfachsten unter die alten Typangabe unte Zeile 15 mit Leerzeilen zum
zusammenfügen):

Java:
private static final boolean OUTPUT_WAS_NAMES = true;
private static final boolean OUTPUT_WAS_ARTIST = false;

oder umgekehrt.

Dann unter Zeile 47 (ohne den obrigen) die Abfragen:

Java:
if(OUTPUT_WAS_NAMES ^ OUTPUT_WAS_ARTIST)
{
	for(Book book:sortedList)
	{
		String s = null;
		if(OUTPUT_WAS_NAMES)
			s = book.getTitle();
		else
			s = book.getArtist();
		System.out.println(s);
	}
}
else
	throw new Error("Illegal Output-Mode selected. (Non Output or both Output selected, possible is only " +
			"XOR Output Mode.");

Kannst du natürlich (was imho sogar besser wäre) am Anfang der main hinpflastern (gemeint ist die Prüfung und natürlich nicht die Schleife), aber hier ist sie finde ich schöner aufgehoben.

bin echt nicht der fuchs in programmieren und finde das auch nicht so einfach nazuvolziehen wie du das gemacht hast
Deshalb sage ich ja, du sollst jede nicht-klare Zeile hinterfragen, sollst ja auch was lernen. Sonst wärst du im "Kostenlosen Stellenangebots-Forum" besser aufgehoben.

müsste eigentlich auch die ausgaben in einer gesonderten klasse book augegeben bekommen
Sorry, das verstehe ich nicht. System.out.println(Object) gibt aus, und die befinde sich in der Main.


Edit: Hoppla, 2 Bugs gefixt. *schäm*
 
Zuletzt bearbeitet:
damit meinte ich das wir 2 klassen brauchen wobei die eingaben in der klasse bocksorter gemacht werden sollen und die ausgabe in der klasse bock gegeben werden sollen
 
ah doch ich glaub jetzt versteh ich es so langsam, aber ich muss ja wenn ich die isbn nummer vergleiche nur die ausgegeben bekommen, wenn ich den titel vergleiche nur die drei titel und wenn ich den autor vergeliche nur die drei namen und bei denpreisen nur die drei preise bekommen.
allerdings versteh ich die letzte zeile trotzdem nicht
:confused:
 
Ja, ist mir gerade aufgefallen, habe versehendlich 2 Fehler gemacht.
Zum einen fehlte das Anführungszeichen des Strings im Konstruktor des Errors, und eine Methode des book's habe ich aus Gewohnheit falsch geschrieben. Habs oben korrigiert.

Die erste Zeile checkt zuerst mal, ob nur eine der beiden boolean's true ist, und gibt sonst am Ende den Error aus, wenn beide oder keine 'true' gesetzt sind. (Wie du ja sagtest.)
Danach kommt die Schleife, die der Reihe nach die Book-Daten aus der Schleife zurückgibt. Je nach dem welche der beiden boolean's gesetzt ist, wird in die Variable 's' der Titel oder Author geschrieben, und per System.out.println(Object) ausgegeben.

Wie soll denn die Ausgabe ablaufen? Wenn du nur so wie ich jetzt in die Konsole schreiben sollst ist es egal, wo die Abfrage abläuft, ich kann sie aber auch problemlos verlagern.
 
public final static int SORT_ASC = 1;
public final static int SORT_DESC = 2;

String message = "Nach "+sorttyp;
switch(direction){
case (BookSorter.SORT_ASC):
message += " absteigend sortiert: \n";
for(int i = 0; i < sorted_books.size(); i++){
message += sorted_books.get(i).getTitel() + "\n";
}
break;
case (BookSorter.SORT_DESC):
message += " aufsteigend sortiert: \n hi";
for(int i = sorted_books.size() - 1; i >= 0; i--){
message += sorted_books.get(i).getTitel() + "\n";
}
break;
}
return message;

so ich hab mal versuch das aufwerts und abwerts angeben zu lassen aber weis nicht ob das so stimmt und ob ich das so einbauen kann und wo?
 
Auch wenn die Variablennamen nicht mit dem, was ich geschrieben habe übereinstimmen, und "sorttyp" eine Zahlvariable ist und da nicht hineinpasst sollte es an sich so funktionieren.
Für Zeilenumbruch nutzt du besser
Java:
System.getProperty("line.separator")

Die Methode rufst du einfach statt

Java:
for(Book book:sortedList)
{
	String s = null;
	if(OUTPUT_WAS_NAMES)
		s = book.getTitle();
	else
		s = book.getArtist();
	System.out.println(s);
}

auf, und übergibst das ergebniss an die Methode

Java:
public static void output(String output)
{
	System.out.println(output);
}

die du in die Klasse Book schreibst.
Dann Erfolgt die Ausgabe auch in der Klasse.

Die letzte Zeile gibt einfach den StackTrace aus.
 
Zurück