Arraylisten auslesen, kommt nur Quatsch raus

kuzdu

Aktives Mitglied
Gute Abend bzw. guten Morgen :D,
habe ein kleines Problemchen woran ich iwie nicht weiterkomme und google hat mir auch (nocht) nicht (weiter)geholfen.
Habe eine neue Klasse zu meiner Main-Klasse. Die heißt Produktverwaltung.java.

Da steht folgendes (relevantes):
Java:
import java.util.*;
import java.io.*;


public class Produktverwaltung implements Serializable {
  
    
  
    private ArrayList Waren_und_Preise = new ArrayList();
    
      
    Produktverwaltung() {
    Waren_und_Preise.add(new Produkt("Südwein",24.99));
    Waren_und_Preise.add(new Produkt("Edelburgunder",129.99));  
    Waren_und_Preise.add(new Produkt("Speisekäse",3.49));  
    Waren_und_Preise.add(new Produkt("Erdammer",5.99));  
    Waren_und_Preise.add(new Produkt("Trüffel",1499.00));  
    }
    
    public void ProdukteAuslesen()
    {
       
    
       Iterator it = Waren_und_Preise.iterator();
       while(it.hasNext())
       System.out.println(it.next());
    }

Die Ausgabe ist:

Java:
onlineshop.Produkt@7d8a992f
onlineshop.Produkt@164f1d0d
onlineshop.Produkt@23fc4bec
onlineshop.Produkt@8dc8569
onlineshop.Produkt@45bab50a
Mit einer For-Schleife ist das Ergebnis genauso.
(Ich wette das ist ieine Lapalie auf die ich nicht komme -.-)

Falls überhaupt noch relevant meine Main-Klasse sieht so aus:

Java:
...
case 1: 
        {
           Produktverwaltung pv = new Produktverwaltung();
          
           //pv.inDateiSchreiben();
           pv.ProdukteAuslesen();
        
           break;
        }//Produkte anzeigen
...

Für mehr Code einfach fragen. :)

Gute Nacht

Gruß kuzdu
 

ARadauer

Top Contributor
Was genau soll da stehen, wenn du eine Produkt mit System.out.println ausgibst?
Java weiß ja nicht, dass du zb den namen ausgeben möchtest..

Also ruft es die toString Methode auf: Object (Java Platform SE 6))

In other words, this method returns a string equal to the value of:

getClass().getName() + '@' + Integer.toHexString(hashCode())

Was kannst du machen?
Entweder die toString Methode in deiner Klasse überschreiben oder einfach eine Eigenschaft deines Objekts ausgeben..


bah... spät is heute schon...
 

hdi

Top Contributor
Und bitte vermeide solche Namen wie "Waren_und_Preise". Das verstößt gegen die Namenskonvention für Variablen. Wenn schon dann sollte das "warenUndPreise" heißen - aber am sinnvollsten wäre eigentlich "produkte", denn genau das steckt da drin. Du hast deine Klasse ja auch "Produkt" genannt und nicht "Ware_und_Preis" ;)

Und nochwas: Wenn nicht zwingend nötig dann vermeide es, als deklarierten Datentyp eine Collections-Implementierung zu nutzen. Nutze lieber den Typ des Interfaces. Außerdem kannst du die sog. Generics nutzen, um dem Compiler bekannt zu machen dass es sich bei den Elementen in der Liste um Produkte handelt. Ansonsten sieht er alles als "Object", und das kann dann u.U. etwas umständlich werden.

List<Produkt> produkte = new ArrayList<Produkt>();
 

kuzdu

Aktives Mitglied
Was genau soll da stehen, wenn du eine Produkt mit System.out.println ausgibst?

Als Ausgabe sollen eigentlich die Produkte auftauchen:
Südwein,24.99
Edelburgunder,129.99
...

Und bitte vermeide solche Namen wie "Waren_und_Preise". Das verstößt gegen die Namenskonvention für Variablen. Wenn schon dann sollte das "warenUndPreise" heißen - aber am sinnvollsten wäre eigentlich "produkte", denn genau das steckt da drin. Du hast deine Klasse ja auch "Produkt" genannt und nicht "Ware_und_Preis"

Okay wusste ich gar nicht. :)

Entweder die toString Methode in deiner Klasse überschreiben oder einfach eine Eigenschaft deines Objekts ausgeben..

Wie genau bewerkstellige ich sowas?
 

jgh

Top Contributor
da ich deine Klasse [c]Produkt[/c] nicht kenne, habe ich mal schnell so eine erstellt...eine Möglichkeit wäre die folgende...du kannst natürlich auch die toString()-Methode überschreiben.

Java:
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;

public class Produktverwaltung implements Serializable {

	private ArrayList Waren_und_Preise = new ArrayList();

	Produktverwaltung() {
		Waren_und_Preise.add(new Produkt("Südwein", 24.99));
		Waren_und_Preise.add(new Produkt("Edelburgunder", 129.99));
		Waren_und_Preise.add(new Produkt("Speisekäse", 3.49));
		Waren_und_Preise.add(new Produkt("Erdammer", 5.99));
		Waren_und_Preise.add(new Produkt("Trüffel", 1499.00));
	}

	public void produkteAuslesen() {

		Iterator it = Waren_und_Preise.iterator();
		while (it.hasNext()) {
			Produkt p = (Produkt) it.next();
			System.out.println(p.getName() + " " + p.getPreis());
		}
	}

	public static void main(String[] args) {
		Produktverwaltung p = new Produktverwaltung();
		p.produkteAuslesen();
	}
}

class Produkt {
	String name;
	double preis;

	public Produkt(String name, double preis) {
		this.preis = preis;
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public double getPreis() {
		return preis;
	}
}
 

Shulyn

Bekanntes Mitglied
Als Ausgabe sollen eigentlich die Produkte auftauchen:
Südwein,24.99
Edelburgunder,129.99
...
Wie genau bewerkstellige ich sowas?

[Java]

/**
*
* @author jgh
*/
class Produkt {
String name;
double preis;

public Produkt(String name, double preis) {
this.preis = preis;
this.name = name;
}

public String getName() {
return name;
}

public double getPreis() {
return preis;
}

// So könntest du es machen...
@Override
public String toString() {
return name + " , " + Double.toString(preis);
}
}
// deine Ausgabe ist dann nur noch
public void produkteAuslesen() {

Iterator it = Waren_und_Preise.iterator();
while (it.hasNext()) {
Produkt p = (Produkt) it.next();
System.out.println(p);
// oder p.toString() , wobei das .toString() automatisch aufgerufen wird und somit unnötig ist...
}
}
[/Java]
 

kuzdu

Aktives Mitglied
Wollte das Thema doch nochmal aufgreifen. Also mir ist jetzt klar, wie ich die Arrays in einer Schleife auslese. Aber wie komme ich an einzelne Werte heran?

Konkreter:
Habe z.B.

Java:
###Klasse Kundenverwaltung
....

protected LinkedList Kundendaten = new LinkedList(); 

Kundenverwaltung(){
      Kundendaten.add(new Kunde("Herbert Maier","Kreutzweg 28a","57072 Siegen"));
      Kundendaten.add(new Kunde("Heidi Schiffer"," Wellnesgasse 4"," 13579 Schönhausen"));
      Kundendaten.add(new Kunde("Claudia Klum", "Wellnesgasse 4","13579 Schönhausen"));
      Kundendaten.add(new Kunde("Peter Held", "Katzenweg 5", "98123 Frömmersbach"));
      }
...

Java:
####Klasse Kunde
public class Kunde extends OnlineShop {
    
    protected String Name;
    protected String Adresse;
    protected String Ort;
    
    public Kunde(String Name_des_Kunden , String Anschrift_Kunde, String Ort_neu)
    {
    Name = Name_des_Kunden;
    Adresse = Anschrift_Kunde;      
    Ort = Ort_neu;
    }
    
     
    public String getName() {
        return Name;
    }
 
    public String getAdresse() {
        return Adresse;
    }
    
     public String getOrt() {
        return Adresse;
    }
}

Java:
###Hauptklasse
....

public void auslesenBestellung()
    {
    //Durch I/O wird ein Wert (integer) übergeben, den der User ausgesucht hat (Wert zwische 1-4)
    //       Kunde k = ???;
    //       System.out.println("KUNDE:" + k.getName());
   }

Also wie komme ich jetzt genau an den Namen?

Danke für Hilfe :)
 

Michael...

Top Contributor
Java:
Kundendaten.get(2).getName()
Wobei in dem Fall eine LinkedList vermutlich nicht so gut geeignet scheint. Ich würde eine ArrayList nehmen.
 

kuzdu

Aktives Mitglied
Java:
Kundendaten.get(2).getName()

Sorry, aber daraus werde ich nicht ganz schlau.

Der Compiler kennt get.Name() aus der Klasse Kunde nicht.

Also:
Java:
System.out.println("KUNDE: " + kv.Kundendaten.get(2).getName());
//cannot find symbol,  symbol:   method getName()
Um das zu "beheben" habe ich es so geschrieben, aber das scheint hinten und Vorne nicht zu stimmen :/:
Java:
  Kundenverwaltung kv = new Kundenverwaltung();
            Kunde k = new Kunde(); //Fehler: constructor Kunde in class onlineshop.Kunde cannot 
                                                      //be applied to given types;
                                                      //required: java.lang.String,java.lang.String,java.lang.String
            
            System.out.println("KUNDE: " + kv.Kundendaten.get(2).getName());

Wenn ich nur kv.Kundendaten.get(2) schreibe, stehe ich wieder am Anfang und bekomme so etwas ausgegeben: onlineshop.Kunde@24a20892.
 

Michael...

Top Contributor
Sorry, hatte übersehen, dass Du bei der Liste keine Generics nutzt, dann musst Du casten:
Java:
((Kunde)Kundendaten.get(2)).getName()
Besser die Liste wie folgt deklarieren:
Java:
LinkedList<Kunde> Kundendaten = new LinkedList<Kunde>();
Dann kann man sich das Casten sparen.
 

njans

Top Contributor
Okay ich steige durch deinen, zum Teil doch recht unvollständigen, Code nicht durch.
Noch mal etwas zum Basisverständnis:

Wenn du System.out.println(MeinKundenObjekt); aufrufst, dann ruft java intern an dem Objekt "MeinKundenObjekt"die Methode toString() auf. Diese liefert dann eine Beschreibung des Objektes. Diese Beschreibung ist genau der Kauderwelsch, den du am Anfang ausgegeben bekommen hast. Was du eigentlich willst, sind die Daten, die in deinem Objekt gespeichert sind. Dazu musst du dann nur auf dem Objekt die Methoden aufrufen, die dir die entsprechenden Daten in einem passenden Format ausgeben.
So zum Beispiel die Methode getName(). Diese gibt dir den Namen als String zurück.
Wenn getName() bei deinem Beispiel nicht erkannt wird (//cannot find symbol, symbol: method getName()),d ann liegt das wahrscheinlich daran, dass du an dem Objekt, welches du mit kv.Kundendaten.get(2) zurückbekommst, diese Methode nicht aufrufen kannst.
Mögliche Ursache:
Du hast ein Array, welche aus "Kunden" besteht, sondern aus anderen Klassen (Evtl. die Klasse, von der Kunde erbt?).
 

beastofchaos

Bekanntes Mitglied
@njans: siehe über dir - da ist die Lösung (Generics) :p

Die Klasse Object hat schließlich nicht die Methode "getName()". Die hat nur "Kunden" und das muss eine LinkedList/ ArrayList wissen ;)


@kuzdu:
Du meintest ja, dass es hier eine Fehlermeldung gibt:
Java:
 Kunde k = new Kunde();
So schau dir mal die Klasse Kunde an - da hast du einen Konstruktor erzeugt, der
Code:
public Kunde(String Name_des_Kunden , String Anschrift_Kunde, String Ort_neu)
lautet. Das heißt, dass du bei "new Kunde()" in Klammern auch die geforderten Parameter auch übergeben musst, sprich z.B.:
Java:
  Kunde k = new Kunde("Hans Dieter", "Dietersstr. 27b", "Berlin");


Und außerdem wie hdi um 7:55 schon bemerkt hat: Es ist eigentlich ein Standard, dass man bei Variablen und Methoden den ersten Buchstaben klein schreibt und jedes "neue" Wort in den Namen einfach groß dahinter schreibt. Also ich veranschauliche das mal an deinem Konstruktor:
Code:
public Kunde(String Name_des_Kunden , String Anschrift_Kunde, String Ort_neu)
zu:
Code:
public Kunde(String kundenName , String kundenAnschrift, String neuerOrt)

Ob nun "kundenName" oder "nameKunde" ist da egal, aber die Schreibweise wird besonders in Java groß geschrieben ;)

Gruß, Thomas
 

hdi

Top Contributor
@kuzdu Ich will dir ja nicht dumm kommen, aber du scheinst ein klassischer Fall von "kann nix und will viel" zu sein ;) Wenn jemand noch nicht mal eine eigentlich unmissverständliche Fehlermeldung interpretieren kann, bzw keine Ahnung hat wie ein Konstruktor-Aufruf funktioniert, sollte er keine Klassen implements Serializable schreiben (weißt du überhaupt was das ist, oder von Eclipse einfügen lassen um eine Warning zu umgehen?), und auch nicht mit ArrayLists oder Generics arbeiten.

Mein (gut gemeinter) Ratschlag: Lass das erstmal stehen und liegen, und kümmere dich darum dass du dir die Basics aneignest. Wirf mal einen Blick in diesen Thread, da findest du genug Lernhilfen.
 

kuzdu

Aktives Mitglied
@Michael...
Funktioniert super. Danke!


@njans: siehe über dir - da ist die Lösung (Generics) :p

@kuzdu:
Du meintest ja, dass es hier eine Fehlermeldung gibt:
Java:
 Kunde k = new Kunde();
So schau dir mal die Klasse Kunde an - da hast du einen Konstruktor erzeugt, der
Code:
public Kunde(String Name_des_Kunden , String Anschrift_Kunde, String Ort_neu)
lautet. Das heißt, dass du bei "new Kunde()" in Klammern auch die geforderten Parameter auch übergeben musst, sprich z.B.:
Java:
  Kunde k = new Kunde("Hans Dieter", "Dietersstr. 27b", "Berlin");

Ja, war vielleicht ein bisschen blöd von mir diesen Codeschnipsel zu posten. Wurde mir von Netbeans angezeigt, dass drei Strings gefordert werden. Aber wenn ich die Daten so übergebe, dann ist der Kunde k ja statisch (wenn ich mich nicht irre?) Und der Benutzer sollte sich den Kunden ja aus der Linkedlist aussuchen, deshalb habe ich nach der Variante von "Michael..." gesucht.
Aber es funktioniert jetzt alles und deshalb besten Dank!

PS: Werde das mit den Standards in nächsten "Projekten" beachten ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
X Multidimensionale Arraylisten Java Basics - Anfänger-Themen 1
S Verknüpfung von Arraylisten Java Basics - Anfänger-Themen 3
D Funktion zwei Arraylisten zu verleichen ob gleich funktioniert nicht Java Basics - Anfänger-Themen 26
D Arraylisten sortieren bitte um Hilfe Java Basics - Anfänger-Themen 4
feinperligekohlensaeure Arraylisten-Namen iterieren.. wie ? Java Basics - Anfänger-Themen 39
P Arraylisten nebeneinander ausgeben Java Basics - Anfänger-Themen 18
J .replace mit Arraylisten Java Basics - Anfänger-Themen 4
V Attribut aus aus jedem ArrayListen index auf Bildschirm ausgeben Java Basics - Anfänger-Themen 9
M Ein Array von Arraylisten Java Basics - Anfänger-Themen 4
F ArrayListen auf anderer Klasse implementieren Java Basics - Anfänger-Themen 4
Anfänger2011 2 kleine Fragen zu ArrayListen Java Basics - Anfänger-Themen 5
D Zwei ArrayListen<String> vergleichen. Java Basics - Anfänger-Themen 11
Joew0815 Zwei ArrayListen mit einander vergleichen Java Basics - Anfänger-Themen 33
U Übersicht trotz mehrdimensionaler Arraylisten Java Basics - Anfänger-Themen 17
B Zusammenfügen von zwei Arraylisten Java Basics - Anfänger-Themen 11
J Ausgabe von verschachtelten ArrayListen Java Basics - Anfänger-Themen 2
L 2 ArrayListen vergleichen Java Basics - Anfänger-Themen 2
G Geschachtelte ArrayListen Java Basics - Anfänger-Themen 27
O ArrayListen in der OOP Java Basics - Anfänger-Themen 7
G Datenmodell aus ArrayListen ? Java Basics - Anfänger-Themen 24
A Macht es Sinn Arraylisten mit Gettern zu übergeben? Java Basics - Anfänger-Themen 19
J ArrayListen mit Name und Vater an JTree übergeben Java Basics - Anfänger-Themen 3
G Namen von ArrayListen dynamisch erzeugen Java Basics - Anfänger-Themen 4
G Mehrere Arraylisten in einer ArrayList speichern ? Java Basics - Anfänger-Themen 3
C ArrayListen in einer ArrayList der Grösse nach sortieren Java Basics - Anfänger-Themen 5
X bei ArrayListen in einer ArrayList werden alle gleich befüll Java Basics - Anfänger-Themen 6
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
T array auslesen Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
D Eclipse will nicht auslesen Java Basics - Anfänger-Themen 6
E TIF Datei auslesen Java Basics - Anfänger-Themen 2
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
sserio TXT-Datei Auslesen und den Wert jedes Namen ausrechnen etc. Java Basics - Anfänger-Themen 37
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
U Sekunden von LocalTime auslesen, wie möglich? Java Basics - Anfänger-Themen 1
E Outlook ordner auslesen Java Basics - Anfänger-Themen 4
R Eigenschaft über Parameter auslesen und ändern Java Basics - Anfänger-Themen 15
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
J Datei aus Netzwerk auslesen Java Basics - Anfänger-Themen 9
J Jsonfile auslesen Java Basics - Anfänger-Themen 8
A Eine Textdatei auslesen Java Basics - Anfänger-Themen 16
N Aus einem String die Anzahl der Vokale auslesen Java Basics - Anfänger-Themen 40
H Array rückwärts auslesen funktioniert nicht Java Basics - Anfänger-Themen 3
J Bestimmte parameter aus Jsonfile auslesen Java Basics - Anfänger-Themen 15
AleXusher Mehrdimensionales Array aus txt.file auslesen Java Basics - Anfänger-Themen 4
L Zeichen an bestimmter Stelle auslesen Java Basics - Anfänger-Themen 4
3 Textdatei Zeilenweise auslesen Java Basics - Anfänger-Themen 3
J Json Datei auslesen Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
S Tastatureingabe auslesen und in Konsole ausgeben Java Basics - Anfänger-Themen 6
S CSV Datei auslesen und anders darstellen Java Basics - Anfänger-Themen 2
G Scanner nutzen und Index auslesen Java Basics - Anfänger-Themen 8
N JTable auslesen Java Basics - Anfänger-Themen 6
N Java CSV Datei auslesen Java Basics - Anfänger-Themen 6
F Webseiten Quelltext auslesen Java Basics - Anfänger-Themen 5
J Datei auslesen (nur bestimmte Stellen) Java Basics - Anfänger-Themen 2
I csv auslesen, mittels List Java Basics - Anfänger-Themen 18
S Letzte Zahl eines Integer auslesen? Java Basics - Anfänger-Themen 3
G If / While Programm (Datei auslesen) Java Basics - Anfänger-Themen 6
S Aus einer .bz2 Datei auslesen Java Basics - Anfänger-Themen 2
K Textdatei auslesen und über Mqtt schicken Java Basics - Anfänger-Themen 4
B Name von Verzeichnis bekommen - Files von einem Ordner auslesen Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
D XML von Seite auslesen Jsoup Java Basics - Anfänger-Themen 2
I Druckerauflösung auslesen - mittlerweile möglich? Java Basics - Anfänger-Themen 4
B WSDL auslesen? Java Basics - Anfänger-Themen 8
D Methoden Textdokument erstellen und auslesen. Java Basics - Anfänger-Themen 46
B HTML Code / Seite auslesen und JAVA Objekte erstellen Java Basics - Anfänger-Themen 12
S Datein auslesen und verarbeiten Java Basics - Anfänger-Themen 1
J Geld speichern und wieder auslesen Java Basics - Anfänger-Themen 10
S CSV auslesen UTF-8 Problem Java Basics - Anfänger-Themen 7
D Datei auslesen & Werte in Variable speichern Java Basics - Anfänger-Themen 12
K String buchstaben auslesen Java Basics - Anfänger-Themen 9
S Amazon Produktbeschreibung auslesen und nach Keywords suchen Java Basics - Anfänger-Themen 2
x-tshainge Interface Wie kann ich aus Textfeldern auslesen Java Basics - Anfänger-Themen 6
Z Ersten Buchstaben eines Elements eines String-Arrays auslesen Java Basics - Anfänger-Themen 5
B .txt. Datei auslesen und bestimmten Wert wiedergeben Java Basics - Anfänger-Themen 5
CptK x wert eines Bildes auslesen Java Basics - Anfänger-Themen 1
T Website auslesen Java Basics - Anfänger-Themen 2
T String auslesen bzw. überprüfen Java Basics - Anfänger-Themen 1
L CSV Auslesen Java Basics - Anfänger-Themen 5
B Auslesen von PDF / Bilder Java Basics - Anfänger-Themen 5
das_leon Alle Zeilen einer CSV-Datei auslesen Java Basics - Anfänger-Themen 1
D Mit Java HTML bzw Javascript auslesen Java Basics - Anfänger-Themen 1
F Arrays Sätze speichern und einzelne Worte mit Index Angabe auslesen Java Basics - Anfänger-Themen 4
F Zwischenwerte aus Browser auslesen Java Basics - Anfänger-Themen 19
S Jede Ziffer einer Zahl auslesen, damit rechnen und beim Ergebnis wiederholen ? Java Basics - Anfänger-Themen 20
G Servlet - externe HTML (URL) auslesen Java Basics - Anfänger-Themen 1
T class Datei auslesen Java Java Basics - Anfänger-Themen 5
P Liste auslesen und in Variablen speichern Java Basics - Anfänger-Themen 7
D String erste Zahl mit LKZ auslesen lassen Java Basics - Anfänger-Themen 36
J Hashmap auslesen Java Basics - Anfänger-Themen 7
J Auslesen/speichern und wieder einlesen Java Basics - Anfänger-Themen 7
D String untereinander auslesen lassen Java Basics - Anfänger-Themen 2
M Aus Datei auslesen und untersuchen ob diese Zeile schon vorhanden ist Java Basics - Anfänger-Themen 3
DaCrazyJavaExpert Variablen Zahlen aus Strings auslesen Java Basics - Anfänger-Themen 4
J Informationen aus Webseiten auslesen Java Basics - Anfänger-Themen 1
S Text aus einer HTML Datei auslesen Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben