ArrayList

Dimbel

Mitglied
Hi, ich hab ne Frage bzgl. ArrayList.

Ich soll für ne Übung ein simples Warenkorb-System erstellen (mit BlueJ).
Es soll 2 Klassen geben, Warenkorb und Artikel.

Artikel:
3 Variablen(Artikelbezeichnung, Artikelnummer und Preis)
2 Methoden(Preis des Artikels ausgeben, alle 3 Variablen in einem toString ausgeben)

Warenkorb:
2 Variablen(Auftragsname und Auftragsnummer)
1 ArrayList(Positionen)
3 Methoden(Artikel zu Positionen hinzufügen, Gesamtsumme des Warenkorbs berechnen und eine Warenkorbausgabe durch die toString-Methode der Artikel-Klasse)

Die Klasse Artikel habe ich fertig, die ist nicht das Problem.
Die einzelnen Artikel sind jeweils eine Instanz der Artikel-Klasse und diese soll ich dann in der ArrayList Positionen speichern.

Das Hinzufügen von Artikeln zum Warenkorb habe ich so gelöst:
Java:
public void addArtikel(Artikel x)
    {
        positionen.add(x);
    }

Meine Frage ist, wie kann ich auf die Elemente im ArrayList zugreifen, da es sich ja um eine Instanz von der Artikel-Klasse handelt und wie kann ich auf die einzelnen Variablen zugreifen?
 

njans

Top Contributor
Java:
public Artikel getArtikel(index i)
    {
        return positionen.get(i);
    }

So holst du die Artikel.
 

Marco13

Top Contributor
Und falls das nicht geht, weil die Liste als
private ArrayList positionen = new ArrayList();
definiert ist: Ändern in
private List<Artikel> positionen = new ArrayList<Artikel>();

Um auf einzelne Elemente zuzugreifen sowas wie
Java:
Artikel artikel = position.get(i); 
// Oder von außen: 
// Artikel artikel = warenkorb.getArtikel(i); 
int preis = artikel.getPreis(); // oder so..
 
N

nillehammer

Gast
pro2 hat gesagt.:
Die vollständige Schreibweise ist doch gar nicht mehr nötig, oder?
Java:
private List<Artikel> positionen = new ArrayList();
Dürfte reichen.
Nope, es fehlt der Diamond-Operator:
Java:
private List<Artikel> positionen = new ArrayList<>();
Den gibt's aber erst seit 1.7 Marco's Schreibweise ist also sicherer, für den Fall, dass der TO evtl. mit 1.6 oder gar 1.5 arbeitet.
 
C

C_A

Gast
Und wenn Du schon mit BlueJ lernst (was ich sehr sinnvoll finde), kannst Du ein Objekt auch auf der Objekt-Bar ablegen und mit rechtem Mausklick "inspizieren". Das kann Dir, wenn Du Probleme mit OO hast, den Einstieg erleichtern.
 

Dimbel

Mitglied
Hey, tut mir Leid das ich erst jetzt antworte.

Mit dieser Methode habe ich einen Artikel in den Warenkorb (in die ArrayList positionen) gelegt:

Java:
public void addArtikel(Artikel x)
    {
        positionen.add(x);
    }

Ist das soweit richtig?

Mit dieser Methode möchte ich die Gesamtsumme aller Artikel berechnen:

Java:
public double summe()
    {
        double gesamtsumme = 0;
        int i = 0;
        
        while(i < positionen.size()){
            Artikel artikel = positionen.get(i);
            gesamtsumme = gesamtsumme + artikel.getpreis(i);
        }
        
        return gesamtsumme;
    }

Irgendwas ist an dieser Methode falsch, ich hoffe ihr könnt mir helfen
 

njans

Top Contributor
Java:
public double summe()
    {
        double gesamtsumme = 0;
        int i = 0; // i bleibt immer 0 
        
        while(i < positionen.size()){
            Artikel artikel = positionen.get(i);
            gesamtsumme = gesamtsumme + artikel.getpreis(i); // getPreis(i) ? Wieso den i-ten preis? Was ist der i-te Preis eines Artikels? 
        }
        
        return gesamtsumme;
    }
 

Dimbel

Mitglied
Ich dachte so kommt man an die einzelnen Variablen der Artikel-Klasse.
Wenn ich einen ganzen Artikel (mit Name, Nummer und Preis) in den Warenkorb bzw das Array lege, bekomme ich durch artikel.get(i) doch auch wieder den kompletten Artikel als Ausgabe oder?
 

njans

Top Contributor
Du hast bei dir die Artikel Klasse liegen.
Hat die Methode getpreis überhaupt einen Parameter int ?
Mich würde es wundern, da ein Artikel ja nicht verschiedene Preise hat, sondern nur einen.
Generell hat ein Shop mehrere Artikel (deswegen auch while-Schleife) und jeder Artikel hat genau einen Preis.

Es wäre vielleicht auch mal gut die Klasse Artikel hier mal zu posten.
 

Dimbel

Mitglied
Ich glaube ich hab da was komplett falsch verstanden.
Ich dachte wenn ich eine Instanz der Klasse Artikel in das ArrayList in der Klasse Warenkorb lege, kann ich einfach so auf die verschiedenen Variablen zugreifen.
Das geht wohl nicht? Ich muss also in der Klasse Artikel für jede Variable ne Ausgabe-Methode schreiben?

In der Artikel-Klasse sind einfach nur die 3 Variablen definiert:

Java:
public class Artikel
{
    // instance variables - replace the example below with your own
    private double preis;
    private String bezeichnung;
    private int artikelnr;

    // konstruktor
    public Artikel(double kosten, String artikelbez, int nr)
    {
       preis = kosten;
       bezeichnung = artikelbez;
       artikelnr = nr;
    }
}
 

njans

Top Contributor
Java:
    private double preis;
Der modifier private bedeutet, dass diese Variable nur innerhalb dieses Objektes gesehen werden kann.
Du kannst also innerhalb deines Objektes mit dieser Variable arbeiten:


Java:
public class Artikel
{
    // instance variables - replace the example below with your own
    private double preis;
    private String bezeichnung;
    private int artikelnr;
 
    //...

    public void machIrgendwas()
    {
       int irgendwas = preis * 10 + Math.pow(2,10);
       //....
    }
}

Aber von außen kannst du nicht darauf zugreifen:
Java:
Artikel artikel = new Artikel(2.1,"foo",1);
artikel.preis = 10.0; //Fehler!
Was du anstelle davon hast (was ebenfalls Gang und Gebe ist) sind getter/setter Methoden.
Diese dienen der Abkapselung und der Kontrolle des Zugriffs:


Java:
public class Artikel
{
    // instance variables - replace the example below with your own
    private double preis;
    private String bezeichnung;
    private int artikelnr;
 
    // konstruktor
    public Artikel(double kosten, String artikelbez, int nr)
    {
       preis = kosten;
       bezeichnung = artikelbez;
       artikelnr = nr;
    }

    public double getPreis()
    {
      return preis;
    }

    public void setPreis(double neuerPreis)
    {
      preis = neuerPreis;
    }

     //... usw für die anderen Variablen
}
Damit kannst du dann an dem Objekt artikel (aus dem Beispiel zuvor) folgendes machen:
Java:
Artikel artikel = new Artikel(2.1,"foo",1);
artikel.setPreis(10.0); //Korrekt!

Hier bestimmst du aber, was passiert, wenn du setPreis und getPreis aufrufst. So kannst du intern jedes mal, wenn sich der Preis verändert, den alten Preis speichern (nur als Beispiel gedacht).
Soviel zu den Basics über Zugriffe von variablen von Objekten.

Du willst in deinem Beispiel schon auf deine Variablen zugreifen, aber bei getPreis macht der index i wenig Sinn. Da, wie gesagt, ein Artikel ja nur einen Preis hat.

Java:
public double summe()
    {
        double gesamtsumme = 0;
        int i = 0; // i bleibt immer 0 
        
        while(i < positionen.size()){
            Artikel artikel = positionen.get(i); // Du holst dir den Artikel
            gesamtsumme = gesamtsumme + artikel.getPreis(); //  Und addierst dann einfach den Preis des Artikels auf die Summe
            // hier musst du noch dafür sorgen, dass i nicht immer nur 0 bleibt
        }
        return gesamtsumme;
    }
 

godi

Aktives Mitglied
Hallo

Wenn du die GesamtSumme deines Warenkorbes berechnen willst und du deine Artikel in der ArrayList gespeichert hast dann verwendest du keine while schleife sondern eine foreach.
Mit dieser kannst du über alle Artikel in deiner ArrayList iterieren.

Java:
int sum = 0;
for(Artikel artikel : positionen) { //Positionen? deine ArrayList mit den Artikeln drinn
     sum += artikel.getPreis();
}
// Jetzt hast du in sum den Gesamtpreis deines Warenkorbes.

godi
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
krgewb ArrayList allgemein halten Java Basics - Anfänger-Themen 6
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
E Arrays in einer ArrayList miteinander vergleichen Java Basics - Anfänger-Themen 12
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
F Arraylist<String>Ein Wort pro Zeile Java Basics - Anfänger-Themen 6
J ArrayList vergleichen im spiel Mastermind Java Basics - Anfänger-Themen 2
Mugetsu35 ArrayList Update ohne Index Java Basics - Anfänger-Themen 6
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
W if-Abfrage bei ArrayList-Methodenaufrufen - Wie löse ich das? Java Basics - Anfänger-Themen 6
W ArrayList und toString Java Basics - Anfänger-Themen 17
volcanos Addition -> List<Integer> mit Arrays.asList() versus List<Integer>ArrayList<>() Java Basics - Anfänger-Themen 14
ArrayList mit unbekannter Menge an Arrays die Arrays vergleichen Java Basics - Anfänger-Themen 9
M 2d ArrayList durchgehen Java Basics - Anfänger-Themen 2
Blkckroll45 Arraylist Java Basics - Anfänger-Themen 6
H Interface Wieso "List<String> list = new ArrayList<>[…]" Java Basics - Anfänger-Themen 4
berserkerdq2 Geht collections.sort bei allen? Linkedhashset, ArrayList, HashSet etc. Java Basics - Anfänger-Themen 4
R Methoden Werte einer ArrayList als Parameter übergeben. Java Basics - Anfänger-Themen 4
L Dauerhaftes Speichern einer Eingabe bei einer ArrayList Java Basics - Anfänger-Themen 26
D Arraylist mit Komplexen Datentyp Java Basics - Anfänger-Themen 3
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
T Permanentes speichern von Objekten in einer ArrayList Java Basics - Anfänger-Themen 6
volcanos List & ArrayList nach Familiennamen abfragen Java Basics - Anfänger-Themen 57
M static ArrayList in non-static Java Basics - Anfänger-Themen 12
berserkerdq2 Ich gebe eine ArrayList als List zurück per MEthode, wie kann ich nun aber die ArrayList speichern? Java Basics - Anfänger-Themen 46
M ArrayList<TreeNode<T>> fortlaufende Nummerierung der Elemente Java Basics - Anfänger-Themen 5
B Bungeecord | ProxiedPlayer wird nicht in ArrayList hinzugefügt Java Basics - Anfänger-Themen 1
S ArrayList Username und passwort mit JTextField eingaben abgleichen Java Basics - Anfänger-Themen 10
F Werte in einer Arraylist Zählen Java Basics - Anfänger-Themen 2
F Erste Schritte Zahlenreihe von Arraylist in 3erBlöcke sortiert in neue Arraylist Java Basics - Anfänger-Themen 2
M ArrayList mit einer Schleife befüllen Java Basics - Anfänger-Themen 2
F Methode ArrayList mit Eingabewert Java Basics - Anfänger-Themen 2
J ArrayList add methode selbst programmieren Java Basics - Anfänger-Themen 10
K Erste Schritte Wie schnell ist LinkedHashMap im Vergleich zur ArrayList, wenn alle Entries durchlaufen werden? Java Basics - Anfänger-Themen 47
thobren jtable arraylist Java Basics - Anfänger-Themen 12
N Exception beim Verwenden von Arraylist? Java Basics - Anfänger-Themen 10
P Schiebefix - ArrayList überschreibt Daten Java Basics - Anfänger-Themen 3
Zeppi OOP ArrayList Java Basics - Anfänger-Themen 2
P ArrayList Java Basics - Anfänger-Themen 4
L ArrayList auf 4 Elemente begrenzen Java Basics - Anfänger-Themen 56
C ArrayList sortieren nach bestimmten Buchstaben in den Wörtern Java Basics - Anfänger-Themen 13
S Arraylist<Object> mit verschiedenen Objects ausgeben Java Basics - Anfänger-Themen 3
J ArrayList auf bereits vorhanden eintrag prüfen Java Basics - Anfänger-Themen 5
M For Schleife/ArrayList Java Basics - Anfänger-Themen 12
L ArrayList<String> --> double[] array Java Basics - Anfänger-Themen 18
L Längstes Element einer ArrayList ausgeben Java Basics - Anfänger-Themen 9
S Aus verschachtelter ArrayList auf einen Wert zugreifen Java Basics - Anfänger-Themen 4
L Methoden ArrayList Werte hinzufügen und löschen Java Basics - Anfänger-Themen 32
M ArrayList in GUI ausgeben Java Basics - Anfänger-Themen 1
J Nur bestimmter Typ aus der ArrayList ausgeben. Java Basics - Anfänger-Themen 9
Bademeister007 Hallo Leute ich hab eine Frage zur ArrayList Java Basics - Anfänger-Themen 8
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
S Objekt aus Arraylist in andere Arraylist kopieren? Java Basics - Anfänger-Themen 2
C Sortieren einer ArrayList Java Basics - Anfänger-Themen 2
krgewb ArrayList von ArrayList Java Basics - Anfänger-Themen 2
R ArrayList Problem Java Basics - Anfänger-Themen 6
jonny_2k12 Wie kann ich eine ArrayList aus einer Klasse in eine andere übergeben? Java Basics - Anfänger-Themen 21
O Namen (mit Umlauten und ß) in einer ArrayList suchen Java Basics - Anfänger-Themen 5
N Typebound Objekte einer Arraylist hinzufügen Java Basics - Anfänger-Themen 7
R Methoden ArrayList clonen wirft exception Java Basics - Anfänger-Themen 3
S ArrayList in andere Klasse übernhemen Java Basics - Anfänger-Themen 5
M Letztes Element einer ArrayList Java Basics - Anfänger-Themen 12
B Objektverwaltung mit ArrayList in einer seperaten Klasse Java Basics - Anfänger-Themen 24
I Sortiert eine HashMap nicht gleich wie eine ArrayList? Java Basics - Anfänger-Themen 1
I ArrayList erstellen innerhalb einer Zeile? Java Basics - Anfänger-Themen 3
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
V Collections ArrayList mit Comparator sortieren Java Basics - Anfänger-Themen 16
D Collections Arrays in ArrayList abspeichern Java Basics - Anfänger-Themen 6
F java.util.ArrayList Java Basics - Anfänger-Themen 3
M ArrayList - Objekt kopieren und ändern Java Basics - Anfänger-Themen 11
M Zugriff auf eine ArrayList in einer anderen Klasse Java Basics - Anfänger-Themen 4
P Arraylist zu einem Array bringen mit Verschachtelung Java Basics - Anfänger-Themen 11
N Methode mit einer Arraylist Java Basics - Anfänger-Themen 106
I ArrayList - Methode zum Speichern eines Eintrags in einer Datei Java Basics - Anfänger-Themen 17
H ArrayList Java Basics - Anfänger-Themen 7
D public ArrayList(Collection<? extends E> c); Java Basics - Anfänger-Themen 2
M JTextField in ArrayList speichern Java Basics - Anfänger-Themen 4
C ArrayList mit return zurückgeben Java Basics - Anfänger-Themen 13
K Zahlenfolge ArrayList Java Basics - Anfänger-Themen 3
C Erste Schritte Frage zur ArrayList Java Basics - Anfänger-Themen 15
I Klassen Eine ArrayList<Long>, die sich automatisch sortiert Java Basics - Anfänger-Themen 20
F Array in ArrayList ablegen Java Basics - Anfänger-Themen 3
V ArrayList Java Basics - Anfänger-Themen 1
Z Runden Arraylist Java Basics - Anfänger-Themen 9
X Frage zur einer ArrayList in einer ArrayList Java Basics - Anfänger-Themen 5
F Arraylist als Pfadausgabe Java Basics - Anfänger-Themen 10
L Daten aus ArrayList in Datenbank durchsuchen Java Basics - Anfänger-Themen 5
L Objekt aus Textdatei in ArrayList speichern Java Basics - Anfänger-Themen 4
M Problem mit ArrayList Java Basics - Anfänger-Themen 32
X Objekte einer ArrayList richtig ausgeben? Java Basics - Anfänger-Themen 8
O Hashmap, ArrayList, LinkedList Java Basics - Anfänger-Themen 7
X Problem mit Arraylist in Arraylist Java Basics - Anfänger-Themen 2
O HashMap - ArrayList Java Basics - Anfänger-Themen 29
M UML-Klassendiagramm ArrayList Java Basics - Anfänger-Themen 1
O ArrayList oberflächig durchsuchen Java Basics - Anfänger-Themen 3
I "\n" aus ArrayList enfernen, aber wie?! Java Basics - Anfänger-Themen 4
V Collections Objekte einer ArrayList in der main() ausgeben Java Basics - Anfänger-Themen 9
Jackii ArrayList ausgabe ohne Dopplung Java Basics - Anfänger-Themen 11

Ähnliche Java Themen


Oben