ERLEDIGT
NEIN
NEIN
ANTWORTEN
34
34
ZUGRIFFE
1131
1131
EMPFEHLEN
-
23.12.09 15:52 #1
- Registriert seit
- Dec 2009
- Beiträge
- 24
public static void main(String[] args) {
String a = JOptionPane.showInputDialog("Bitte geben Sie den Titel des ersten Buches ein");
String b = JOptionPane.showInputDialog("Bitte geben Sie den Autor des ersten Buches ein");
String c = JOptionPane.showInputDialog("Bitte geben Sie die ISBN Nummer des ersten Buches ein");
String d = JOptionPane.showInputDialog("Bitte geben Sie den Preis des ersten Buches ein");
int e = Integer.parseInt(c);
double f = Double.parseDouble(d);
Book book = new Book(a,b,e,f);
String g = JOptionPane.showInputDialog("Bitte geben Sie den Titel des zweiten Buches ein");
String h = JOptionPane.showInputDialog("Bitte geben Sie den Autor des zweiten Buches ein");
String i = JOptionPane.showInputDialog("Bitte geben Sie die ISBN Nummer des zweiten Buches ein");
String j = JOptionPane.showInputDialog("Bitte geben Sie den Preis des zweiten Buches ein");
int k = Integer.parseInt(i);
double l = Double.parseDouble(j);
Book book2 = new Book(g,h,k,l);
String m = JOptionPane.showInputDialog("Bitte geben Sie den Titel des zweiten Buches ein");
String n = JOptionPane.showInputDialog("Bitte geben Sie den Autor des zweiten Buches ein");
String o = JOptionPane.showInputDialog("Bitte geben Sie die ISBN Nummer des zweiten Buches ein");
String p = JOptionPane.showInputDialog("Bitte geben Sie den Preis des zweiten Buches ein");
int q = Integer.parseInt(o);
double r = Double.parseDouble(p);
Book book3 = new Book(m,n,q,r);
String sortierung = javax.swing.JOptionPane.showInputDialog
("Nach was sollen die Bücher sortiert werden?\r Titel=1,Autor=2,ISBN=3,Preis=4");
int x = Integer.parseInt (sortierung);
neue klasse
private String titel;
private String autor;
private int isbn;
private double preis;
public Book (String name, String autor, int isbn, double preis) {
this.titel = titel;
this.autor = autor;
this.isbn = isbn;
this.preis = preis;
soweit bin ich erstmal gekommen aber ich weis nicht wie ich das weitermachen muss, so das mir die eingaben alphabetisch bzw. nach größe der zahl sowohl aufsteigend als auch absteigend ausgegeben werden kann

wenn mir da jemand helfen könnte wäre superGeändert von Johnny8519 (23.12.09 um 16:05 Uhr)
-
23.12.09 16:10 #2
Ich würde ganz einfach ne Schleife und ne ArrayList nehmen, und je nach dem richtig einreihen. (add(int, Object)).
Nach Strings ordnet man per compareTo bzw. compareToIgnoreCase.
Und du musst bei der ISBN-Nr. noch die Minus entfernen lassen, bevor du es zu Integer parst. (z. B. "978-3-907080-55-9").
Ach ja, die Java-Tags sind nicht zur Zierde da, und die Variablennamen in der main würde ich überarbeiten. (Event. Array.)
Außerdem würde ich bei m - p nach den dritten Buch fragen, sonst könnte das recht verwirrend sein.
-
23.12.09 16:16 #3
- Registriert seit
- Dec 2009
- Beiträge
- 24
Ja das mit dem dritten buch hab ich schon reingeschrieben
aber könntest du mir nen beispiel geben für die schleife, verstehe das nicht so ganz?
-
23.12.09 17:03 #4
Habs nicht ausgiebig getestet, aber denke so in etwa sollte es hinhauen:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
package core; import java.util.ArrayList; import java.util.List; import javax.swing.JOptionPane; public class Main { private static final byte BOOKS_TO_SORT = 3; private static final byte SORT_BY_TITLE = 1; private static final byte SORT_BY_ARTIST = 2; private static final byte SORT_BY_ISBN = 3; private static final byte SORT_BY_PRICE = 4; private static List<Book> sortedList; static { sortedList = new ArrayList<Book>(); } public static void main(String[] args) { Book[] books = new Book[BOOKS_TO_SORT]; for(byte loopCounter = 1; loopCounter <= BOOKS_TO_SORT; loopCounter++) { String title = JOptionPane.showInputDialog("Bitte geben Sie den Titel des "+loopCounter+". Buches ein."); String artist = JOptionPane.showInputDialog("Bitte geben Sie den Author des "+loopCounter+". Buches " + "ein."); String isbn = JOptionPane.showInputDialog("Bitte geben Sie die ISBN Nummer des "+loopCounter+". Buches" + " ein."); String price = JOptionPane.showInputDialog("Bitte geben Sie den Preis des "+loopCounter+". Buches ein."); long filteredLongISBN = filterAndParseStringToLong(isbn, '-'); double floatingPointPrice = Double.parseDouble(price); books[loopCounter - 1] = new Book(title, artist, filteredLongISBN, floatingPointPrice); } String sortTyp = JOptionPane.showInputDialog("Nach welcher Kathegorie sollen die Bücher sortiert werden?" + System.getProperty("line.separator") + "(Titel = 1, Autor = 2, ISBN = 3, Preis = 4)"); byte byteSortTyp = Byte.parseByte(sortTyp); for(Book book:books) setBookInRow(book, byteSortTyp); for(Book book:sortedList) { String s = book.getTitle() + " - " + book.getArtist() + " - " + book.getISBN() + " - " + book.getPrice(); System.out.println(s); } } private static void setBookInRow(Book book, byte sortTyp) { if(sortedList.size() == 0) sortedList.add(book); else { int positionToAdd = 0; boolean breakLoop = false; if(sortedList.size() == 0) sortedList.add(book); { for(byte loopCounter = 0, size = (byte) sortedList.size(); (loopCounter < size) && (!breakLoop); loopCounter++) { Book loopBook = sortedList.get(loopCounter); if(sortTyp == SORT_BY_ARTIST ^ sortTyp == SORT_BY_TITLE) { String lexicographicalCompareString = null; if(sortTyp == SORT_BY_TITLE) { lexicographicalCompareString = book.getTitle(); if(lexicographicalCompareString.compareTo(loopBook.getTitle()) <= 0) { positionToAdd = loopCounter; breakLoop = true; } } else if(sortTyp == SORT_BY_ARTIST) { lexicographicalCompareString = book.getArtist(); if(lexicographicalCompareString.compareTo(loopBook.getArtist()) <= 0) { positionToAdd = loopCounter; breakLoop = true; } } } else if(sortTyp == SORT_BY_ISBN) { long isbn = book.getISBN(); if(isbn < loopBook.getISBN()) { positionToAdd = loopCounter; breakLoop = true; } } else if(sortTyp == SORT_BY_PRICE) { double price = book.getPrice(); if(price < loopBook.getPrice()) { positionToAdd = loopCounter; breakLoop = true; } } } } sortedList.add(positionToAdd, book); } } private static long filterAndParseStringToLong(String stringToFilter, char charToRemove) { String result = null; for(byte b = 0, strSize = (byte) stringToFilter.length(); b < strSize; b++) { char c = stringToFilter.charAt(b); if(c != charToRemove) { String s = String.valueOf(c); if(result != null) result+= s; else result = s; } } return(Long.parseLong(result)); } private static class Book { private String title; private String artist; private long isbn; private double price; public Book(String title, String artist, long filteredLongISBN, double floatingPointPrice) { super(); this.title = title; this.artist = artist; this.isbn = filteredLongISBN; this.price = floatingPointPrice; } private String getTitle() { return(title); } private String getArtist() { return(artist); } private long getISBN() { return(isbn); } private double getPrice() { return(price); } } }
-
23.12.09 17:08 #5
- Registriert seit
- Dec 2009
- Beiträge
- 24
vielen dank werd das gleich mal testen
-
23.12.09 17:29 #6
- Registriert seit
- Dec 2009
- Beiträge
- 24
Ja das funktioniert super, allerdings fehlt mir noch die Eingabe ob es absteigend oder aufsteigend sortiert werden soll. Aber vielen dank
-
23.12.09 17:36 #7
nP, das ist eh auch einfach. Eine zusätzliche JOptionPane, und je nach Ergebniss eventuell die Prüfung umdrehen.
Falls du irgend eine Zeile nicht kapierst, frag ruhig.
-
23.12.09 17:39 #8
- Registriert seit
- Dec 2009
- Beiträge
- 24
Ja zeile 21 was gibt die mir an?
-
23.12.09 17:46 #9
Das schreibt eine neue Instance in die Variable. Die Variable ist nur ein "Platzhalter" für eine Instance im RAM, aber natürlich muss man auch eine Instance mit new erstellen und in die Variable die Instance "schreiben", also der Variable sagen auf welche Instance sie verweißen soll.
Falls du aber den static-Constructor drum herum meinst, der Code darin wird beim ersten Zugriff auf die Klasse ausgeführt (egal ob per Instance wie ne neue Erzeugung, oder per statische Methode), kann aber natürlich nur auf statische Methoden und Variablen zugreifen, da zu den Zeitpunkt noch keine Instance existieren kann.
-
23.12.09 17:55 #10
- Registriert seit
- Dec 2009
- Beiträge
- 24
wie kann ich das denn einstellen so das ich nur die titel oder den preis in rihenfolge ausgegeben bekomme?
-
23.12.09 17:56 #11
- Registriert seit
- Dec 2009
- Beiträge
- 24
bin echt nicht der fuchs in programmieren und finde das auch nicht so einfach nazuvolziehen wie du das gemacht hast
-
23.12.09 17:58 #12
- Registriert seit
- Dec 2009
- Beiträge
- 24
müsste eigentlich auch die ausgaben in einer gesonderten klasse book augegeben bekommen
-
23.12.09 18:08 #13
Zeile 50:
Code java:1
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):
Code java:1 2
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:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
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.
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.bin echt nicht der fuchs in programmieren und finde das auch nicht so einfach nazuvolziehen wie du das gemacht hast
Sorry, das verstehe ich nicht. System.out.println(Object) gibt aus, und die befinde sich in der Main.müsste eigentlich auch die ausgaben in einer gesonderten klasse book augegeben bekommen
Edit: Hoppla, 2 Bugs gefixt. *schäm*Geändert von Kai008 (23.12.09 um 18:25 Uhr)
-
23.12.09 18:23 #14
- Registriert seit
- Dec 2009
- Beiträge
- 24
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
-
23.12.09 18:24 #15
- Registriert seit
- Dec 2009
- Beiträge
- 24
was sagt mir den das was du mir zuletzt geschickt hast? versteh ich nicht und die letzte zeile wird auch rot angezeigt.
Ähnliche Themen
-
if abfrage im while schleife
Von mckani im Forum PHPAntworten: 5Letzter Beitrag: 05.03.06, 22:21 -
ABfrage gesucht / Zählen von variablen Namen
Von PhoenixDH im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 20.05.05, 21:01 -
where abfrage und while schleife
Von scrotum im Forum PHPAntworten: 6Letzter Beitrag: 03.08.03, 17:32 -
SQL Abfrage + Schleife
Von dPo2000 im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 15.07.02, 12:35 -
IF - Abfrage in Schleife
Von d4k4 im Forum PHPAntworten: 5Letzter Beitrag: 14.06.02, 11:52





Zitieren
Login





