Objekte zur Laufzeit in Schleife erzeugen und in ArrayList ablegen

Renato

Mitglied
Hallo,

es finden sich zwar einige Beispiele im WWW, aber dennoch werde ich nicht schlau und ersuche eure Hilfe. Folgendes Beispiel, ich möchte ein Team von mehreren Personen mit unterschiedlichen Eigenschaften in einer ArrayList ablegen. Die ArrayList erstelle ich mit

Code:
ArrayList <Person> al = new ArrayList <Person>();

Eine neue Person erstelle ich mit

Code:
Person p1 = new Person("Tim", 25);

und übergebe den Namen und das Alter in der Klammer für die Klasse Person.

Sagen wir, ich möchte dies im Programm zur Laufzeit machen.

Code:
ArrayList <Person> al = new ArrayList <Person>();

input = new Scanner(System.in);

System.out.print("Name eingeben: ");
String name = input.next();
System.out.print("Alter eingeben: ");
int alter = input.nextInt();
p1 = new Person("name,alter);

al.add(p1);

Das geht auch. Wie aber setze ich dies jetzt in einer Schleife um, die z.B. 5 Durchläufe machen soll?

Code:
ArrayList <Person> al = new ArrayList <Person>();
input = new Scanner(System.in);
for (int i=1;i>5;i++){
???
}

Idealerweise heißen die Objekte dann p1, p2, ... , p5.
Danke euch.
 
Wie aber setze ich dies jetzt in einer Schleife um, die z.B. 5 Durchläufe machen soll?
Indem du diesen Block
Code:
System.out.print("Name eingeben: ");
String name = input.next();
System.out.print("Alter eingeben: ");
int alter = input.nextInt();
p1 = new Person("name,alter);
al.add(p1);
iin die for-Schleife packst.
Vorher ev. noch abfragen, wieviele Personen angelegt werden sollen.
Idealerweise heißen die Objekte dann p1, p2, ... , p5.
Das ist NICHT ideal. Man verwendet gerade dann Collections, wenn man nicht mit vielen individuell benannten Objekten rumhantieren möchte.
for (int i=1;i>5;i++)
Der Schleifenkopf ist falsch. Richig heisst es
Code:
for(int i = 0; i < 5; i++)
 
Danke. Die Schleife hatte ich schnell hingeschrieben, stimmt natürlich. Dass der Block in die Schleife gehört, wusste ich bereits. Ich weiß aber nicht, was ich da ändern muss. Da hilft mir deine Antwort noch nicht weiter 😉

Wie werden denn Objekte in Collections sonst benannt? Sonderlich individuell finde ich p1, p2 nicht.

Ach ja, die for-Schleife sollte nur als Beispiel dienen. Eigentlich möchte ich solange Objekte erstellen, bis ich die Eingabe selbst abbreche. Dies ist aber nicht das Problem, nur die Erstellung der Objekte zur Laufzeit.
 
Ich weiß aber nicht, was ich da ändern muss.
Wenn ich dein "da" richtig interpretiere: Gar nichts.
Wie werden denn Objekte in Collections sonst benannt?
Gar nicht. Sie haben keinen eigenen Variablenname mehr.
Sonderlich individuell finde ich p1, p2 nicht.
Dann viel Spass beim hantieren mit 100 oder 1000 Personen-Objekten, die dann person1 bis person1000 heissen.
Lies dir das mal durch: https://www.java-forum.org/thema/fragen-zu-variablennamen.62032/
 
Danke für den Link! Hab es jetzt so hinbekommen und was gelernt:

Code:
ArrayList<Person> al = new ArrayList<Person>();
        for (int i=1;i<5;i++){
            input = new Scanner(System.in);
            System.out.print("Name eingeben: ");
            String name = input.next();
            System.out.print("Alter eingeben: ");
            int alter = input.nextInt();
            al.add(new Konto(name,alter));
        }

Die letzte Zeile war mir halt so noch nicht bekannt.
 

Neue Themen


Zurück
Oben