Objekte in ArrayList eintragen und auslesen

Speedjunkee

Mitglied
Hallo Community!

Ich habe folgendes Problem: Ich möchte eine unbestimmte Anzahl an Punkten (jeweils mit x, y & z - Wert) einlesen (zunächst über die Tastatur, später eventuell mittels eines .txt-Files) und dann von einem bestimmten Punkt die Koordinaten wieder ausgeben. Dazu habe ich die Klasse Punkt mit genannten Variablen erstellt. In der Main Methode habe ich eine ArrayList erstellt und füge in einer while-Schleife in jedem Durchlauf einen Punkt hinzu. Laut Debugger funktioniert das Hinzufügen auch. Wenn ich allerdings einen beliebigen Punkt auslesen will, dann wird immer nur der zuletzt eingegebene ausgegeben.

Liegt es daran, dass ich in der While Schleife immer wieder den Punkt p1 überschreibe? Wenn ja, gibt es eine elegantere Methode eine unbestimmte Anzahl an Punkten einzulesen, mit denen ich dann auch weiterrechnen kann?

Hier der Source Code:
Java:
public class Hauptmethode {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        Scanner sc = new Scanner(System.in);
        System.out.println("Anzahl der Punkte definieren!");
        int anzahl = sc.nextInt();
        int i = 0;
        ArrayList
 Punktliste = new ArrayList
();
        Punkt p1 = new Punkt();
        
        while ( i < anzahl)
        {
            
            System.out.println("Welche X Koordinate?");
            p1.setX(sc.nextDouble());
            System.out.println("Welche Y Koordinate?");
            p1.setY(sc.nextDouble());
            System.out.println("Welche Z Koordinate?");
            p1.setZ(sc.nextDouble());
            Punktliste.add(i, p1);
            i++;
        }
        System.out.println("Von welchem Punkt die Koordinaten anzeigen?");
        int nr = sc.nextInt();
        System.out.println("Punkt: " + nr + " X " + Punktliste.get(nr).getX());
        }


Ich bin Anfänger, also bin ich dankbar für jeden "einfachen Lösungsvorschlag" ;)
Ich arbeite übrigens mit Eclipse Luna.
 
Zuletzt bearbeitet:

strußi

Top Contributor
du kannst die die anzahl der einträge über punkteliste.size(); ausgeben lassen, und hinzufügen könntest du es auch so machen das du variablen deklarierst und immer ein neues object hinzufügst (int x, y, z einlesen) und punkteliste.add( new Punkt( x, y, z)); anweist.
 

Joose

Top Contributor
Habe beide Varianten getestet, leider erfolglos...

Gibt es weitere Vorschläge?

Wozu weitere Vorschläge wenn einer der bisherigen doch schon die richtige Lösung beinhaltet ;)

Java:
        Punkt p1 = new Punkt();
        
        while ( i < anzahl)
        {
            
            System.out.println("Welche X Koordinate?");
            p1.setX(sc.nextDouble());
            System.out.println("Welche Y Koordinate?");
            p1.setY(sc.nextDouble());
            System.out.println("Welche Z Koordinate?");
            p1.setZ(sc.nextDouble());
            Punktliste.add(i, p1);
            i++;
        }

Du erzeugst ein(!!!) Objekt der Klasse Punkt.
In der "while"-Schleife setzt du von diesem einem(!!!) Objekt die X, Y und Z Koordinate und fügst dieses Objekt zur Liste hinzu.
--> Du hast ein Punkt Objekt erzeugt und fügst diese X-mal in die Liste hinzu! Und jedesmal änderst du von diesem Objekt die X, Y, Z Koordinate.


Java:
        while ( i < anzahl)
        {
            Punkt p1 = new Punkt();
            
            System.out.println("Welche X Koordinate?");
            p1.setX(sc.nextDouble());
            System.out.println("Welche Y Koordinate?");
            p1.setY(sc.nextDouble());
            System.out.println("Welche Z Koordinate?");
            p1.setZ(sc.nextDouble());
            Punktliste.add(i, p1);
            i++;
        }
 
Zuletzt bearbeitet:

Speedjunkee

Mitglied
Danke für die Beharrlichkeit!

Habe es jetzt mit folgendem Code zum laufen gebracht:
Java:
public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        
        System.out.println("Wie viele Punkte einlesen?");
        ArrayList
 Punktliste = new ArrayList
();
        
        int anzahl= sc.nextInt();
        int i = 0;
        while ( i < anzahl)
        {
 
            System.out.println("Welche X Koordinate?");
            double x=sc.nextDouble();
            System.out.println("Welche Y Koordinate?");
            double y=sc.nextDouble();
            System.out.println("Welche Z Koordinate?");
            double z=sc.nextDouble();
            Punktliste.add(new Punkt(x,y,z));
            i++;
        }
        System.out.println("Die Koordinate von welchen Punkt ausgeben?");
        int nr=sc.nextInt();
        System.out.println("Punktnummer: X=" + Punktliste.get(nr).getX() + "  Y=" + Punktliste.get(nr).getY() + "  Z=" + Punktliste.get(nr).getZ());
        
    }

Mein Problem bestand darin, dass in der ArrayList anscheinend Platzhalter für p1 eingefügt wurden und jedes mal wenn ich für p1 eine neue Koordinate angegeben habe, diese auf jedem Platzhalter angeglichen wurde.

Jetzt funktioniert es wie es soll!

Danke :)</punkt></punkt>
 

camelCase90

Aktives Mitglied
Du hast einfach nur die ganze Zeit mit einem Objekt gearbeitet.

Jede Referenz in deiner ArrayList hat auf ein und das selbe Objekt gezeigt, dadurch hast du in jedem schleifen Durchlauf einfach nur die Werte in dem Objekt geändert.
 

strußi

Top Contributor
Alternativ kannst du es auch so ausbauen
Java:
public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Wie viele Punkte einlesen?");
        ArrayList<Punkt> Punktliste = new ArrayList<>();

        int anzahl= sc.nextInt();
        int i = 0;
        double x, y, z;
        while ( i < anzahl)
        {
            
            System.out.println("Welche X Koordinate?");
            x=sc.nextDouble();
            System.out.println("Welche Y Koordinate?");
            y=sc.nextDouble();
            System.out.println("Welche Z Koordinate?");
            z=sc.nextDouble();
            Punkt p =new Punkt( x, y, z);
            Punktliste.add( p);
//            Punktliste.add(new Punkt(x,y,z)); //alternativ
            i++;
        }
        System.out.println("Die Koordinate von welchen Punkt ausgeben?");
        int nr=sc.nextInt();
        System.out.println("Punktnummer: X=" + Punktliste.get(nr).getX()
                                    + "  Y=" + Punktliste.get(nr).getY()
                                    + "  Z=" + Punktliste.get(nr).getZ());
    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
N Typebound Objekte einer Arraylist hinzufügen Java Basics - Anfänger-Themen 7
X Objekte einer ArrayList richtig ausgeben? Java Basics - Anfänger-Themen 8
V Collections Objekte einer ArrayList in der main() ausgeben Java Basics - Anfänger-Themen 9
X Objekte in ArrayList einfügen Java Basics - Anfänger-Themen 10
R Objekte zur Laufzeit in Schleife erzeugen und in ArrayList ablegen Java Basics - Anfänger-Themen 4
N Objekte in ArrayList finden Java Basics - Anfänger-Themen 10
G Datentypen verschiedene Objekte in eine ArrayList, Generics Java Basics - Anfänger-Themen 2
A Objekte einer ArrayList auslesen und auf der Konsole ausgeben Java Basics - Anfänger-Themen 2
D Klassen Objekte nach erstellung in ArrayList speichern Java Basics - Anfänger-Themen 5
T gemeinsame Methode für ArrayList vererbter Objekte Java Basics - Anfänger-Themen 6
L Auf Objekte in Arraylist zugreifen Java Basics - Anfänger-Themen 6
G Methoden Alle Objekte der ArrayList ausgeben funktioniert nicht. Java Basics - Anfänger-Themen 12
G Objekte aus ArrayList in StringArray konvertieren?! Java Basics - Anfänger-Themen 13
S ArrayList oder die Objekte in H2 Database speichern Java Basics - Anfänger-Themen 11
W bestimmte Objekte in ArrayList auslesen Java Basics - Anfänger-Themen 8
C Methoden Objekte mit Hilfe einer Schleife in einer ArrayList erzeugen Java Basics - Anfänger-Themen 26
bluerob generische ArrayList -> erbende Objekte auslesen Java Basics - Anfänger-Themen 24
A ArrayList bzw. Objekte übergeben Java Basics - Anfänger-Themen 6
X Collections Reihenfolge bestimmter Objekte in einer ArrayList verändern Java Basics - Anfänger-Themen 2
S Objekte aus Arraylist richtig ansprechen Java Basics - Anfänger-Themen 5
I OOP Objekte in einer ArrayList Java Basics - Anfänger-Themen 5
C Objekte in ArrayList Java Basics - Anfänger-Themen 6
I Objekte aus arrayList Java Basics - Anfänger-Themen 2
D X Werte in ArrayList von Point Objekte alle gleich ? Java Basics - Anfänger-Themen 11
R ArrayList Objekte verschwinden Java Basics - Anfänger-Themen 8
D Objekte auf Knopfdruck in Arraylist erzeugen Java Basics - Anfänger-Themen 2
M Objekte mit Schleife in ArrayList erstellen? Java Basics - Anfänger-Themen 6
T Probleme mit ArrayList, in der Objekte gespeichert sind, die ArrayLists enthalten Java Basics - Anfänger-Themen 2
Semox Sind Objekte in einer ArrayList überschreibbar? Java Basics - Anfänger-Themen 2
J Datensätze aus einer DB als Objekte erzeugen und in ArrayList abspeichern Java Basics - Anfänger-Themen 9
M Objekte aus einer Arraylist löschen Java Basics - Anfänger-Themen 7
L Objekte in einer ArrayList vergleichen Java Basics - Anfänger-Themen 19
H bestimmte objekte in ArrayList löschen? Java Basics - Anfänger-Themen 7
G Die Objekte eine ArrayList sortieren Java Basics - Anfänger-Themen 50
X Aus XML Datei Objekte in Arraylist laden - Fehler! Java Basics - Anfänger-Themen 9
H Objekte aus Text-Datei wieder in ArrayList laden Java Basics - Anfänger-Themen 8
G Objekte in ArrayList vertauschen :( Java Basics - Anfänger-Themen 13
A Objekte in ArrayList anhand Variable sortieren Java Basics - Anfänger-Themen 10
I Objekte in ArrayList Java Basics - Anfänger-Themen 3
E Zugriff auf Objekte in einer ArrayList Java Basics - Anfänger-Themen 3
B Objekte aus Datei auslesen und in ArrayList schreiben! Java Basics - Anfänger-Themen 25
J Objekte einer ArrayList in eine Tabelle einfügen Java Basics - Anfänger-Themen 2
I Zapier -> wie werden Objekte gespeichert? Java Basics - Anfänger-Themen 10
K Hab ich dass so richtig erklärt (Objekte und Referenzen)? Java Basics - Anfänger-Themen 5
J Objekte in JSON speichern?? Java Basics - Anfänger-Themen 1
I Objekte in ShareProject speichern um später zu nutzen Java Basics - Anfänger-Themen 4
J Objekte Java Basics - Anfänger-Themen 22
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
Hzrfa Objekte, Referenz Java Basics - Anfänger-Themen 5
T 3D Objekte verarbeiten Java Basics - Anfänger-Themen 2
N Welche Objekte kann man zu einem Set hinzufügen Java Basics - Anfänger-Themen 4
I XML einlesen und Objekte bekommen Java Basics - Anfänger-Themen 2
Encera Zugriff auf Map-Objekte Java Basics - Anfänger-Themen 3
E Objekte löschen Java Basics - Anfänger-Themen 9
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
B Objekte verschwinden beim Übersetzen Java Basics - Anfänger-Themen 5
D Zwei verschiedene Intellij Projekte, wie benutze ich wechselseitig objekte Java Basics - Anfänger-Themen 8
E Rekursiv Objekte erzeugen - geht das? Java Basics - Anfänger-Themen 2
T Collections Sind Subklassen-Objekte in Listen mit Generics erlaubt? Java Basics - Anfänger-Themen 16
F Aus eingelesener Datei korrekt Objekte erzeugen Java Basics - Anfänger-Themen 5
G Übergeordnete Objekte abrufen Java Basics - Anfänger-Themen 9
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
A Objekte mit Parametern in eine Liste packen Java Basics - Anfänger-Themen 19
B Objekte, bspw. konkret Arraylists,manuell aus Speicher löschen? Java Basics - Anfänger-Themen 70
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
D Wie Objekte im JFrame frei bewegen lassen? Java Basics - Anfänger-Themen 3
Spandeli8 Erzeugte Objekte gegenüber Bildern hervorheben in Java Processing Java Basics - Anfänger-Themen 1
J Zwei Objekte vergleichen Java Basics - Anfänger-Themen 8
L Werte von Objekte addieren Java Basics - Anfänger-Themen 14
U Objekte in LinkedList löschen und editieren Java Basics - Anfänger-Themen 14
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
G Methoden Informationen aus zwei Objekte bekommen? Java Basics - Anfänger-Themen 6
P Globale Objekte Java Basics - Anfänger-Themen 2
C Nachträglich neue grafische Objekte hinzufügen Java Basics - Anfänger-Themen 7
D Interaktion zweier Objekte Java Basics - Anfänger-Themen 5
M Objekte in Array speichern und ausgeben Java Basics - Anfänger-Themen 17
S Objekte indiziert erstellen Java Basics - Anfänger-Themen 27
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
M Objekte mittels equals vergleichen Java Basics - Anfänger-Themen 14
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
A (Objekte Java Basics - Anfänger-Themen 6
Y Klassen Klassen und Objekte Java Basics - Anfänger-Themen 3
Y Klassen Klassen und Objekte mit set und get Java Basics - Anfänger-Themen 0
U Objekte in einer LinkedList sortieren Java Basics - Anfänger-Themen 5
N Methode um Objekte einer Liste hinzuzufügen Java Basics - Anfänger-Themen 1
G Java Objekte auf Duplikate testen Java Basics - Anfänger-Themen 4
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
M Objekte miteinander vergleichen Java Basics - Anfänger-Themen 18
C Verschiedene Objekte in einer Liste speichern Java Basics - Anfänger-Themen 6
J Java GUI- Objekte Position per Quelltext bestimmen Java Basics - Anfänger-Themen 4
G Objekte in Methoden? Java Basics - Anfänger-Themen 13
H Auf Objekte bzw Variabeln aus einer anderen Methode zugreifen Java Basics - Anfänger-Themen 7
S Frage Klasse und Objekte Java Basics - Anfänger-Themen 2
K Boolean in einer Methode um 2 Objekte zu vergleichen Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben