zNeL Geschrieben 20. Oktober 2008 Geschrieben 20. Oktober 2008 Guten Morgen! Bin mehr oder weniger AnfĂ€nger in Java, hoffe mal ihr könnt mir weiterhelfen. Erstmal zum Thema kurz, es soll eine Anwendung geschrieben werden, welche Daten in einem Vektor speichert, und diese spĂ€ter ausgibt. So das erste Problem: Es sind immer 2 zusammengehörige Daten, die auch zusammen ausgegeben werden sollen (z.B. Artikelnummer und Wert eines Artikels). Wenn ich das also so mache: int anzahl; anzahl=meinVector.size(); System.out.println(anzahl); for ( int i = 0; i < anzahl; i++) { System.out.println("Artikelnummer und Wert: "+meinVector.get(i)); } } wĂ€re das ja blödsinn, da die Ausgabe immer nur einen Wert anzeigen wĂŒrde, erst Artikelnummer, danach den Wert usw... Allerdings steht da ja dann immer "Artikelnummer und Wert" Habe die Daten mit meinVector.add() hinzugefĂŒgt, gibt es da eine Möglichkeit Werte zusammen zu fassen? Zu meiner Frage mit dem Variablen einlesen. Es sollen also Artnr. und Wert eingegeben werden, nach Eingabe will ich dann Fragen ob weitere Artikel eingegeben werden sollen, jedoch kann ich mit dem BufferedReader ja nur Strings einlesen, will aber bei "ja" die Funktion erneut starten. Also so wĂŒrde es ja logischerweise dann nicht gehen: System.out.println("Weiteren Artikel eingeben? j oder n"); BufferedReader in3 = new BufferedReader( new InputStreamReader(System.in) ); auswahl = in3.readLine(); System.out.println(auswahl); /* if(auswahl==j) geht ja nicht hier, da es kein Boolean ist { komponenteHinzufuegen(); }*/ weiĂ jemand irgend eine Möglichkeit? Schonmal danke an die, die sich die MĂŒhe gemacht haben das alles zu lesen. Hoffe es war einigermaĂen verstĂ€ndlich. GruĂ zNeL
flashpixx Geschrieben 20. Oktober 2008 Geschrieben 20. Oktober 2008 Ich versteh nicht so recht wo das Problem ist. Vector<meineDaten> blub = new Vector<meineDaten>(); a = new meineDaten(); a.meinAttribut1 = "abcdef"; a.meinAttribut2 = 12345; blub.add(a); for(int i=0; i < blub.size(); i++) sys.pr.out( blub.get(i).meinAttribut1 + blub.get(i).meinAttribut2 das for geht auch als Iterator, wenn ich nicht irre. Aber warum einen Vector, mĂŒssen die Daten zwingend synchronisiert sein? Phil
zNeL Geschrieben 20. Oktober 2008 Autor Geschrieben 20. Oktober 2008 Danke schonmal, woher hast denn du das meineDaten in den <> genommen? bei mir meckert er rum wenn ich das einfach so dazuschreibe. Vector weil es ne Vorgabe ist, und die Inhalte spĂ€ter noch sortiert werden sollen, gröĂter Wert zuerst mit zugehöriger Artikelnummer zum Beispiel
flashpixx Geschrieben 20. Oktober 2008 Geschrieben 20. Oktober 2008 (bearbeitet) Vector (Java 2 Platform SE v1.4.2) Galileo Computing :: Java ist auch eine Insel â 12.3 Listen Vector weil es ne Vorgabe ist, und die Inhalte spĂ€ter noch sortiert werden sollen, gröĂter Wert zuerst mit zugehöriger Artikelnummer zum Beispiel Das ist kein Grund um einen Vector zu nehmen. Nur weil es Vorgabe ist und sortiert werden muss, ist ein Vector nicht zu begrĂŒnden! siehe dazu unter der Sun Adresse: As of the Java 2 platform v1.2, this class has been retrofitted to implement List, so that it becomes a part of Java's collection framework. Unlike the new collection implementations, Vector is synchronized. vs ArrayList [...] This class is roughly equivalent to Vector, except that it is unsynchronized. [...] Phil Bearbeitet 20. Oktober 2008 von flashpixx
zNeL Geschrieben 20. Oktober 2008 Autor Geschrieben 20. Oktober 2008 Da hast du wohl Recht, normal ist das kein Grund. Aber ich hab die Vorgabe bekommen das mit nem Vektor zu lösen, dann kann ich das ja nicht einfach anders machen. Trotzdem aber schonmal vielen Dank, nur komme ich immer noch nicht wirklich weiter. Das 2. Problem habe ich schon selbst gelöst, zwar etwas unschön aber es funktioniert jetzt.
nekokaburi Geschrieben 20. Oktober 2008 Geschrieben 20. Oktober 2008 Hallo, Falls es zu jeder Artikelnummer nur einen Wert gibt und die Artikelnummer eindeutig ist, könnte man statt eines Vektors ganz einfach eine Map nehmen, diese speichert alles als Key-Value-Paare, du kannst also beide Werte speichern! Nimmst du eine TreeMap sortiert dir die Liste die Werte sogar von ganz alleine Wegen dem Dateieinlesen... wo ist da das Problem? du hast den String "j" fĂŒr weitermachen, wieso prĂŒfst du nicht if(inputString.equals("j")? GrĂŒĂe, Neko
zNeL Geschrieben 20. Oktober 2008 Autor Geschrieben 20. Oktober 2008 @ nekokaburi genau so hab ich das nun gemacht, klappt nun auch doch ganz sauber, hatte nen kleinen Fehler in der else if abfrage.
zNeL Geschrieben 20. Oktober 2008 Autor Geschrieben 20. Oktober 2008 habe es nun ganz anders gemacht, eher rumgetrickst als wirklich gelöst: int anzahl=meinVector.size(); for ( int i = 0; i < anzahl; i=i+2) { System.out.println("Artikelnummer: "+meinVector.get(i) + " Wert: "+meinVector.get(i+1)); } Nun wird mir immer die Artikelnummer angegeben, und danach der Wert. NatĂŒrlich ist es so eher nicht möglich dies alles zu sortieren, wie gesagt eher getrickst als alles andere... zufrieden bin ich damit eigentlich nicht :old
Dragon8 Geschrieben 20. Oktober 2008 Geschrieben 20. Oktober 2008 Wenn du es etwas sauberer haben willst, dann mach es so wie es flashpixx vorgeschlagen hat. Du erstellst eine eigene Klasse die die Artikelnummer und den Wert dafĂŒr speichert. Dazu noch ne Getter und Setter Methode fĂŒr beide Attribute und die benutzt du dann um die Daten in deinem Vector zu speichern. Das heiĂt du legst fĂŒr alle Datenpaare einfach nen neues Objekt deiner Klasse an und speicherst die Artikelnummer und den Wert dann in diesem Objekt. Das legste dann anstatt der Artikelnummer und dem Wert in dem Vector ab.
nekokaburi Geschrieben 20. Oktober 2008 Geschrieben 20. Oktober 2008 Mhm deine Lösung ist natĂŒrlich nicht wirklich ideal. Wie du selbst gesagt hast, sortieren ist nicht möglich! AuĂerdem ist es so fĂŒr jemand anderen schwer zu verstehen, was das eigentlich soll... und eine for-schleife mit i=i+2 sollte zumindest kommentiert werden, sowas ĂŒberliest man sonst leicht Allgemein solltest du dir einen besseren Namen als "meinVektor" ausdenken, nenn es doch "artikelnummernVektor" oder besser noch (da nach CodeConventions) du benutzt englische Namen. Achja, solltest du ein eigenes Objekt erstellen wie oben gefordert, vergiss nicht, dass diese Klasse Comparable implementieren muss (compareTo-Methode), damit du deinen Vektor sortieren kannst. Wobei ich immernoch nicht verstehe, warum du dort nicht HashMap, oder zumindest LinkedList/ArrayList hernimmst? GrĂŒĂe, Neko
zNeL Geschrieben 20. Oktober 2008 Autor Geschrieben 20. Oktober 2008 ja hast recht da smit dem i=i+2 war nicht optimal, hab es nun so gemacht: int anzahl=meinVector.size(); for ( int i = 0; i < anzahl; i++) { System.out.println("Artikelnummer: "+ meinVector.get(i).getArtnr()+" Wert: " + meinVector.get(i).getWert()); } die Comparable Sache werd ich nur erstmal googeln Ansonsten schonmal vielen Dank an alle!! GruĂ zNeL
zNeL Geschrieben 27. Oktober 2008 Autor Geschrieben 27. Oktober 2008 So, mal weg von artikelnummern usw. Ich habe nun 2 Klassen, person und personalkosten. In der Klasse person habe ich Variablen, die ich in der Klasse personalkosten in einem Vektor sortieren möchte. so, also public class Personalkosten implements Comparable und public int compareTo(Object obj){ Person p = new Person(); return p.abteilung.compareTo(((Person)obj).abteilung); } das ganze um die abteilung der person alphabetisch zu sortieren. nun habe ich das so verstanden, das ich mit Collections.sort(peronal); (wobei personal der vektor ist) den vektor sortieren könnte. Klappt aber nicht, es wird nen Fehler rausgeschmissen. Allerdings ist mir auch nicht ganz klar, wie sich das aufeinander bezieht, hat vielleicht jemand ne Ahnung?
Dragon8 Geschrieben 27. Oktober 2008 Geschrieben 27. Oktober 2008 Was fĂŒr eine Fehlermeldung wird denn ausgegeben?
flashpixx Geschrieben 27. Oktober 2008 Geschrieben 27. Oktober 2008 Klappt aber nicht, es wird nen Fehler rausgeschmissen. Allerdings ist mir auch nicht ganz klar, wie sich das aufeinander bezieht, hat vielleicht jemand ne Ahnung? Es ist immer hilfreich die Fehlermeldung zu posten ! Ich wĂŒrde Compare analog zu meinem Bsp implementieren: public class Individuum implements Comparable<Individuum> { .... public final int compareTo(Individuum poObj) { if ( (poObj == this) || (poObj == null) || (poObj.getClass() != this.getClass()) ) return 0; return (this.gnFitness - poObj.gnFitness > 0.0) ? 1 : -1; } }
zNeL Geschrieben 27. Oktober 2008 Autor Geschrieben 27. Oktober 2008 Vielleicht ist das Problem, das die Variablen in der anderen Klasse sind. Also der nicht klar kommt mit der "Person" in meinem compareTo. Fehlermeldung ist: cannot find symbol symbol : variable Collections location: class personalkosten.Personalkosten Collections.sort(personal);
zNeL Geschrieben 27. Oktober 2008 Autor Geschrieben 27. Oktober 2008 Also irgendwie... hatte in der falschen Klasse java.util.* importiert :old Sowas bescheuertes...
Empfohlene BeitrÀge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto fĂŒr unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden