Cheatboy Geschrieben 4. März 2010 Geschrieben 4. März 2010 Hallo, ich hab hier ein Problem bei dem ich gerade nicht weiter komme. Ich habe hier eine CSV datei mit mehreren Tabellenzeilen. In diesen Tabellenzeilen stehen Werte drinne, welche ich "fix" mit einem Objekt zugeteilt habe. Nun soll ich je nach anzahl der Tabellenzeilen x Objekte mithilfe einer ArrayList erstellen und später sollen die Objekte individuell die Tabellenzeilen befüllen können. Nun ich hänge noch ganz am Anfang, beim Erschaffen von den Objekten. Ich dachte mir eine for-Schleife wäre dazu recht nützlich. Die Anzahl der Tabellenzeilen habe ich auch schon ermitteln können, sodass im Prinzip nur noch die Semantik fehlt, wie ich nun x Objekte erstelle. Ein Ausgangsobjekt habe ich bereits, welches heißt: SetWerte nr = new SetWerte() Die ArrayList lautet wie folgt: ArrayList<SetWerte> objektliste = new ArrayList<SetWerte>(); Vielen Dank für Eure Hilfe Zitieren
kingofbrain Geschrieben 4. März 2010 Geschrieben 4. März 2010 Und wo genau ist Dein Problem? Du hast ein Objekt erzeugt und eine ArrayList, wo eine bestimmte Menge dieser Objekte reinsoll. Also erzeugst Du das Objekt innerhalb einer Schleife und fügst es der ArrayList hinzu. Wo hast Du dabei Probleme? Peter Zitieren
Cheatboy Geschrieben 4. März 2010 Autor Geschrieben 4. März 2010 (bearbeitet) mit dem Hinzufügen in die Arraylist. Das will nicht so ganz klappen. Es sollen immer ja neue objekte hinzukommen, also muss ich ja irgendwie das increment zeichen hinzufügen und da bin gerade überfragt... *edit* Ich füge einfach mal meinen Code (dadurch ja auch mein Problem) bei. Ich weiß es ist immer schwer zu verstehen was andere Leute nun genau für Probleme haben, deshalb ist ein direkter Blick dadrauf meisten aufklärender... //Schleifenablauf um die Werte in die jeweiligen Objekte zu schreiben for(int i = 0; i<info.size(); i++) { //Wird verwendet, um zu wissen, wieviele Zeilen (somit auch Objekte) benötigt werden int a = 0; //Ermittelt die Anazhl der Zeilen in der Tabelle int j = 1; try { //Modulo-Switch switch(i%8) { case 0: nr.setEK_netto(Float.valueOf(info.get(i)).floatValue()); break; case 1: nr.setVK_brutto(Float.valueOf(info.get(i)).floatValue()); break; case 2: nr.setmwSt(Float.valueOf(info.get(i)).floatValue()); break; case 3: nr.setvk_netto(Float.valueOf(info.get(i)).floatValue()); break; case 4: nr.setMarge(Float.valueOf(info.get(i)).floatValue()); break; case 5: nr.setArtikelnummer(Integer.valueOf(info.get(i)).intValue()); break; case 6: nr.setTitel(info.get(i)); break; case 7: nr.setErscheinungsdatum(info.get(i)); j++; System.out.println("switch/case: " + j); break; } while(a<j) { a++; for(int c = 0; c <= a; a++) { System.out.println("schleife " + j); objektliste.add(new nr); } } Für Verbesserungsvorschläge bin ich natürlich auch nicht undankbar. Mein jetziges Problem liegt jedoch GAANZ unten bei der while() schleife. Mir ist jetzt auch gerade aufgefallen das ich mich total verschossen habe und soviele Zahlenwerte in der for-Schleife habe, das selbst der weißeste Java-Guru wohl nicht mehr durchblicken würde... Bearbeitet 4. März 2010 von Cheatboy Zitieren
flashpixx Geschrieben 4. März 2010 Geschrieben 4. März 2010 Dein Code ist so nicht verständlich. Über was iteriert die For-Schleife. die Zeilen der Datei oder die Daten der Spalte? Die "break" Anweisungen innerhalb des Switch sind bei diesem Konstrukt nicht notwendig, denn i%8 liefert genau die Restklasse von 8 und diese ist eindeutig, d.h. es kann kein nachfolgendes Case ausgeführt werden, da das Ergebnis von i%8 immer nur auf genau ein Case zutrifft. Was Deine While-Schleife inhaltlich machen soll, ist mir überhaupt nicht klar, da "nr" ein Objekt und kein Array ist. Lerne bitte Deine Fehler präzise und so zu beschreiben, dass man mit diesen etwas anfangen kann Zitieren
lbm1305 Geschrieben 4. März 2010 Geschrieben 4. März 2010 Ich komme zwar aus der .NET-Ecke, aber es sollte in Java doch auch eine StreamReader-Klasse geben. Mit diesen kann man die Daten der CSV-Datei Zeile für Zeile auslesen. Beim zeilenweise Auslesen der Daten müssten die (bei CSV) beim Semikolon gesplittet werden. Aus dem Array bediene ich mich beim jeweiligen Feld und erstelle das Objekt SetWerte. Danach einfach der ArrayList hinzufügen und dann geht es zur nächsten Zeile. Ich brauche dafür keine Anzahl der auszulesenden Zeilen. Zitieren
kingofbrain Geschrieben 4. März 2010 Geschrieben 4. März 2010 Dein Quellcode ist wirklich nicht aussagekräftig. Achtung Pseudocode: öffne CSV-Datei lege Liste "l" an für jede Zeile "z" tue lege neues Objekt "o" zum Hinzufügen "l" an zerlege "z" für jeden Wert "w" aus "z" tue besetze den korrekten Wert in "o" mit "w" füge "o" zu "l" hinzu Gieß das mal in Java-Code und zeig uns das Ergebnis. Peter Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.