Vektor + auf Elemente zugreifen funktioniert nicht

Status
Nicht offen für weitere Antworten.

javanaggi

Mitglied
Hallo Forum,

ich habe ein Problem mit meinem Programm.

Ich programmiere ein Adressbuch (bisher Konsolenprogramm).
Ich habe eine Klasse Address
mit den Attributen surname, firstname, zip, city
und den passenden getter und setter methoden.

außerdem habe ich eine datei, in der pro zeile ein wort steht...satzaufbau:
surname
firstname
zip
city
surname
firstname
zip
city
...
...
...

So, auslesen kann ich datei (funktion: read_database()).
read_database ruft in sich selbst eine funktion list_insert auf, die folgendes tut:

in read_database wird nach dem auslesen von 4 Zeilen (also einem Datensatz) list_insert aufgerufen.
Code:
public void list_insert(String helpsur, String helpfirst, String helpzip, String helpcity)
{
    ad.setSurname(helpsur);
    ad.setFirstname(helpfirst);
    ad.setZip(helpzip);
    ad.setCity(helpcity);
    vec.addElement(ad);
}
So vergrößert sich doch mein Vektor um ein Element je Aufruf von list_insert.

jetzt hab ich nur ein Problem mit der Ausgabe.
Code:
public void list_print()
{
    System.out.println("Vektor enthält Element ad: "+vec.contains(ad));
    System.out.println("Vektor ist "+vec.size()+" Elemente groß");

    for(int p=0; p<vec.size(); p++)
    {
        System.out.println(vec.elementAt(p);
        System.out.println(ad.getSurname());
        System.out.println(ad.getFirstname());
        System.out.println(ad.getZip());
        System.out.println(ad.getCity());
    }
}
Meine Ausgabe lautet wie folgt:

Vektor enthält Element ad: true
Vektor ist 2 Elemente groß
Address@19821f
nachname datensatz2
vorname datensatz2
zip datensatz2
city datensatz2
Address@19821f
nachname datensatz2
vorname datensatz2
zip datensatz2
city datensatz2

Ich habe bestimmt irgendwo einen logischen fehler. wo liegt der Fehler? Ich will Elemente in den vektor einfügen und am ende alle Elemente des vektors ausgeben. da ein Element des vektors ein objekt der klasse Address ist, nun meine frage, wie komme ich an die daten des objekts im vektor?

ich hoffe ich habe mich halbwegs klar ausgedrückt.

javanaggi
 

Der Müde Joe

Top Contributor
ein neues Objekt pro Addresse!!!!

Code:
insert(...){
Addess address = new Address();
adrress.setStreet("JavaAvenue");
myVector.add(address);
}

is den ad ne GLOBALE Variable?

EDIT:
Adress@12345
ist ja 2x die geliche Referezaddresse..also 2x das gleiche Objekt an verschiedenen Stellen im vector
 

NTB

Bekanntes Mitglied
javanaggi hat gesagt.:
Code:
public void list_insert(String helpsur, String helpfirst, String helpzip, String helpcity)
{
    ad.setSurname(helpsur);
    ad.setFirstname(helpfirst);
    ad.setZip(helpzip);
    ad.setCity(helpcity);
    vec.addElement(ad);
}
So vergrößert sich doch mein Vektor um ein Element je Aufruf von list_insert.

Dein Vektor vergrößert sich immer um das gleiche Element.
Du musst in der obigen Methode jedes Mal ein neues Objekt erstellen. Zumindest sieht das von dem Codeschnipsel gesehen so aus, als wenn Du das Objekt "ad" nur einmal erzeugst.

Code:
public void list_insert(String helpsur, String helpfirst, String helpzip, String helpcity)
{
    Address ad = new Address();
    ad.setSurname(helpsur);
    ad.setFirstname(helpfirst);
    ad.setZip(helpzip);
    ad.setCity(helpcity);
    vec.addElement(ad);
}
 

javanaggi

Mitglied
danke für die antworten.
das war der fehler!
stimmt. ich habe vergessen in der list_insert Address ad = new Address(); zu schreiben.

habe es jetzt gemacht und bekomme jetzt:
Address@19821f
null
null
null
null
Address@addbf1
null
null
null
null

So, jetzt muss ich nur noch die Addressen selbst ausgeben.

also irgendwas in der richtung:

Code:
System.out.println(vec.elementAt(p).getSurname());

Mir ist klar, dass das so nicht geht. Aber wie kann ich sowas lösen?

Ich muss doch irgendwie auf ein Element meines Vektors zugreifen können und dort dann wieder auf die Methode meiner Address?

jemand ne idee?

javanaggi
 

Der Müde Joe

Top Contributor
das gleiche umgekehrt
Code:
print(){
for(Address address : vector){
System.out.println(address.getName());
}
}

//oder

Iterator it = vector.iterator();
while(it.hasNext()){
Address address = it.next() //wenn nicht generischer Vector dann cast (Address)it.next();
System.out.println(address.getName());
}
dan sollt es gehen
 

javanaggi

Mitglied
mhh...das versteh ich nicht. also wie soll das funktionieren?

und warum gibt mir

Code:
System.out.println(vec.elementAt(p));

eine Adresse und nicht mein Element (ad) zurück?

javanaggi
 

Der Müde Joe

Top Contributor
javanaggi hat gesagt.:
Code:
System.out.println(vec.elementAt(p));
eine Adresse und nicht mein Element (ad) zurück?

Es gibt dein Element ad zurück...Aber da du toString() von Object nicht überschreibst
und dann das Element Sysoutest wird das ausgeführt
Code:
getClass().getName() + '@' + Integer.toHexString(hashCode())

geerbt von Object.

Wenn du was spezielles willst musst du toString() überschreiben.

Code:
public String toString(){
StringBuilder result = "";
result.append(this.name);
return result.toString();
}

oder in deiner Print methode das hatl machen wie du schon hast
Code:
public void list_print()
{
    System.out.println("Vektor enthält Element ad: "+vec.contains(ad));
    System.out.println("Vektor ist "+vec.size()+" Elemente groß");

    for(int p=0; p<vec.size(); p++)
    {
Address address = vec.elementAt(p);
        System.out.println(address .getSurname());
        System.out.println(address .getFirstname());
        System.out.println(address .getZip());
        System.out.println(address .getCity());
    }
}

EDIT:
Address address = (Address)vec.elementAt(p); wenn du keine generischen Vector hast (casten)
 

javanaggi

Mitglied
danke. jetzt funktionierts!!!!

ich kann die sachen ausgeben. ohne dein edit hätt ich es nicht geschafft. kannst du mir sagen warum das so umständlich geht (casten)?!?!

javanaggi
 

Der Müde Joe

Top Contributor
javanaggi hat gesagt.:
kannst du mir sagen warum das so umständlich geht (casten)?!?!

Vor Java 1.5 gab es noch keine Generischen Typen. In einem vector konnte man
alles reintun. Also Address / Person ...

der Vector liefert dann auch ein Objekt vom Typ Object zurück, welches dann in das gewünschte Object
umgewandelt (gecastet) wird.

Das kann Probleme zur Laufzeit geben, da man nie sicher sein kann, ob das Objekt im Vector wirklich
von diesem Typ ist (ClassCastException)
Mit Java 1.5 wurden dann generics eingeführt, wo schon zur übersetzungszeit die Typsicherheit überprft wird,
wobei die cast überflüssig wurden.
Code:
Vector<Address> v = new Vector<Address>();
v.add(new Address());//ok
v.add(new Date()); //compiler error

Address a = v.elementAt(1); //ok, da sicher nur Addressen im vector

//ohne;
Vector v = new Vector();
v.add(new Address()); //ok
v.add(new Date()); //ok

Address a = (Address)v.elementAt(0); //ok
Address b = (Address)v.elementAt(1); // ClassCastException zur laufzeit

wird die so vielleicht ein wenig klarer
 

javanaggi

Mitglied
ok.

danke für die antworten.

ich habe ein weiteres (kleines ?) Problem.

Ich implementiere gerade eine Suchfunktion.

Code:
public void search (String name)
{
    for(int p=0; p<this.size(); p++)
    {
        Address ad = (Address)this.elementAt(p);
        if(ad.getSurname()==name)
        {
            System.out.println("gefunden");
        }
        else
        {
            System.out.println("nicht gefunden");
        }
    }
}

Es sei gesagt, dass ich diese Funktion in einer Klasse EnhancedVector stehen habe. Es wird auch jedes Element eines Vektors aufgerufen und auch die Elemente in meinem Objekt ad, aber er sagt er findet den Namen nicht. übersehe ich irgendwas? Meinem Verständnis nach müsste das doch stimmen?

jemand ne idee?

javanaggi
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Wie greif ich auf Elemente eines Arrays in einem Vektor zu? Java Basics - Anfänger-Themen 6
G elemente in einem vektor nach ihren eigenschaften sortieren Java Basics - Anfänger-Themen 2
B Vektor vs List Java Basics - Anfänger-Themen 4
L Klassen Vektor Klasse Java Basics - Anfänger-Themen 2
E Variable (Vektor) in andere Methode übergeben Java Basics - Anfänger-Themen 4
O Matrix, Vektor Java Basics - Anfänger-Themen 9
J Compiler-Fehler Fehler bei Vektor (E extends Object declared in class Vector) Java Basics - Anfänger-Themen 9
U Ist diese Methode zur Matrix Vektor Multiplikation korrekt ? Java Basics - Anfänger-Themen 5
S Variablen Vektor zur Berechnung verwenden Java Basics - Anfänger-Themen 4
E Matrix mit Vektor multiplizieren Java Basics - Anfänger-Themen 7
M transposen Vektor transformieren Java Basics - Anfänger-Themen 8
M Vektor Rechnung Java Basics - Anfänger-Themen 6
B Stützstellen (Vektor) erzeugen? Java Basics - Anfänger-Themen 8
R Matrix-Vektor-Multiplikation Java Basics - Anfänger-Themen 13
B Vektor addieren Java Basics - Anfänger-Themen 4
F Funktion eines JButton in einen Vektor verlagern Java Basics - Anfänger-Themen 4
Z Matrix mit Vektor multiplizieren Java Basics - Anfänger-Themen 13
P Vektor im R3 drehen? Java Basics - Anfänger-Themen 14
M Map mit Vektor: Element hinzufügen Java Basics - Anfänger-Themen 21
A vektor bearbeiten?? Java Basics - Anfänger-Themen 9
V Position in einem Vektor Java Basics - Anfänger-Themen 3
N Vektor mit eigener Datenstruktur sortieren Java Basics - Anfänger-Themen 20
D Array? ArrayList? Vektor? ...? Java Basics - Anfänger-Themen 6
C OOP Aus Vektor zufällig einen Eintrag wählen und in Array[][] schreiben Java Basics - Anfänger-Themen 5
Z Summe von Vektor-Elementen Java Basics - Anfänger-Themen 5
S Variable über den Vektor bestimmen Java Basics - Anfänger-Themen 20
J klasse vektor addition Java Basics - Anfänger-Themen 10
M Vektor Klasse Problem Java Basics - Anfänger-Themen 12
M Reihenfolge von Objekten im Vektor Java Basics - Anfänger-Themen 3
G Vektor auslesen und als int Variable casten Java Basics - Anfänger-Themen 4
G Mothoden von Objekten in Vektor aufrufen Java Basics - Anfänger-Themen 4
F ComboBox im Vektor auslesen, Vektor<JComboBox> Java Basics - Anfänger-Themen 6
G Probleme mit Datenstrukturen (Vektor, HashMap) Java Basics - Anfänger-Themen 5
T Koordinaten eines Vektor übergeben Java Basics - Anfänger-Themen 21
J Vektor in Vektor speichern? Java Basics - Anfänger-Themen 10
J Vektor null setzen Java Basics - Anfänger-Themen 10
R Vektor in verketteter Liste Java Basics - Anfänger-Themen 14
H Vektor auslesen und durchsuchen Java Basics - Anfänger-Themen 4
G Vektor Java Basics - Anfänger-Themen 1
C "null" Element Vektor abfragen Java Basics - Anfänger-Themen 7
C vektor erschaffen Java Basics - Anfänger-Themen 2
C Ein Element aus Mehrdimensionalem Vektor lesen Java Basics - Anfänger-Themen 2
L Vektor befüllen? Java Basics - Anfänger-Themen 3
G Doppelte (Paar) Werte in einem Vektor finden Java Basics - Anfänger-Themen 6
S kartesischer Vektor im n-dimensionalen Raum. Java Basics - Anfänger-Themen 7
G Objekte in einen Vektor speichern Java Basics - Anfänger-Themen 4
M Vektor, gefüllt mit Objekten einer selbstdefinierten Klasse Java Basics - Anfänger-Themen 4
C checken ob ein Vektor leer ist Java Basics - Anfänger-Themen 3
J tast-Eingabe_(Vektor)Skalar-produkt Java Basics - Anfänger-Themen 19
G Problem clone und Vektor Java Basics - Anfänger-Themen 4
M Vektor sortieren Java Basics - Anfänger-Themen 7
P Vektor toString? Java Basics - Anfänger-Themen 2
T Hashtable und Vektor Java Basics - Anfänger-Themen 3
I einlaggern von Objekten in ein Vektor Java Basics - Anfänger-Themen 10
G Vektor Java Basics - Anfänger-Themen 3
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
E Elemente aus Liste entfernen und hinzufügen Java Basics - Anfänger-Themen 3
J 2 listen vergleichen, die auch null Elemente haben können ! Java Basics - Anfänger-Themen 9
B bei 2 Arrays Anzahl gleicher Elemente vergleichen? Java Basics - Anfänger-Themen 49
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
A Elemente in einem Array Java Basics - Anfänger-Themen 5
J Methoden Die Reihenfolge der Iterator-Elemente umkehren Java Basics - Anfänger-Themen 3
M ArrayList<TreeNode<T>> fortlaufende Nummerierung der Elemente Java Basics - Anfänger-Themen 5
Cassy3 Binäre Bäume Rekursiv durchlaufen und bestimmte Elemente Zählen Java Basics - Anfänger-Themen 6
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
D Array Elemente sortieren in aufsteigender Reihenfolge Java Basics - Anfänger-Themen 10
Bademeister007 Elemente aus zwei verschiedenen Arrays miteinander vergleichen und gegeben falls entfernen Java Basics - Anfänger-Themen 14
T SCC Elemente Java Basics - Anfänger-Themen 0
L ArrayList auf 4 Elemente begrenzen Java Basics - Anfänger-Themen 56
H Array Elemente Java Basics - Anfänger-Themen 17
T Elemente aus Array zu TableView JavaFX übertragen Java Basics - Anfänger-Themen 2
J Array Elemente werden nicht gefunden! Java Basics - Anfänger-Themen 6
GAZ String replace() Elemente tauschen Java Basics - Anfänger-Themen 13
J Array; Elemente kopieren Java Basics - Anfänger-Themen 17
V Array aus Klasse um vererbte Elemente erweitern Java Basics - Anfänger-Themen 3
S Laufzeit Quicksort wenn alle Elemente gleich sind Java Basics - Anfänger-Themen 4
A Array Elemente extrahieren ! Java Basics - Anfänger-Themen 4
J Elemente in einem 2D-Array summieren Java Basics - Anfänger-Themen 6
Kirby.exe Anzahl vorkommender Elemente im Array zählen Java Basics - Anfänger-Themen 9
M Matrix auf 4 Elemente untersuchen mit offenen Enden Java Basics - Anfänger-Themen 8
M Matrix Elemente vergleichen Java Basics - Anfänger-Themen 11
S Elemente eines Arrays bei Ausgabe auslassen Java Basics - Anfänger-Themen 2
I Alle Elemente von zwei Listen vergleichen Java Basics - Anfänger-Themen 1
L String zerlegen & elemente hinzufügen Java Basics - Anfänger-Themen 5
L Anzahl der Elemente key in einem Array mit log(N) Laufzeit Java Basics - Anfänger-Themen 4
L Erste Schritte Elemente zwei Schlangen vergleichen Java Basics - Anfänger-Themen 14
E Elemente aus Liste löschen Java Basics - Anfänger-Themen 5
L Array Elemente verschieben Java Basics - Anfänger-Themen 5
S Elemente in Liste einfügen Java Basics - Anfänger-Themen 2
D jsoup.select findet keine elemente Java Basics - Anfänger-Themen 2
F JList Elemente mit Strings vergleichen Java Basics - Anfänger-Themen 12
W ArrayList löscht alle Elemente bis auf eines Java Basics - Anfänger-Themen 2
M Elemente in einer ArrayList einander zuordnen. Java Basics - Anfänger-Themen 18
T Klassen Doppelte Elemente aus Container entfernen Java Basics - Anfänger-Themen 6
G Verkettete Liste - Neu erzeugte Elemente werden nicht ausgegeben Java Basics - Anfänger-Themen 5
GreenTeaYT HashMap dupliziert meine Elemente? Java Basics - Anfänger-Themen 2
J Elemente in Array speichern, löschen, ... Java Basics - Anfänger-Themen 3
arjoopy Kapselung Elemente aus Objekt-Array ausgeben Java Basics - Anfänger-Themen 8
U Input/Output Elemente eines Binären Suchbaums ausgeben Java Basics - Anfänger-Themen 10
M ComboBox bestimmte Elemente disablen/ausgrauen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben