Zum Inhalt springen

Objekte in einer (for) Schleife erzeugen


Cheatboy

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 von Cheatboy
Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...