Methoden Einzelne Objekte eines Vectors addieren

jimbob

Mitglied
Hallo bzw. Mahlzeit 😉,

ich versuche mich gerade an meiner ersten App. Und stecke bei den Java-files fest.
Ich habe einen Vector, der objekte speichert, die mehrere unterschiedliche variablen haben.
Wie kann ich nun die for-schleife (ich denke das sie hier das beste mittel ist) so erstellen, das sie mir die summe einer einzelne Variablenart ergibt.

Als Beispiel ich habe einen Vektor mit den Objekt Kunden, diese bestehen aus name und alter, und ich möchte das alter aller Kunden addieren (klar sinnlos, ist nur zur Verdeutlichung)

vielen dank für eure Hilfe!
 
Wo hängt's denn? Wie du auf den Inhalt des Vektors zugreifst weißt du? Und wie du auf die Attribute der Kunden-Objekte zugreifst auch?
 
genau das eben nicht, die Instanzvariablen des Kunden habe ich als privat implementiert mit dazugehörigen getter... jetzt möchte ich in einer neuen klasse die methoden schreiben um mir das gesamt alter eben ausgeben zu lassen.

ich frage mich jetzt wie ich das in der schleife schreiben soll... w das auf den vektor zu gegriffen wird? und dann auf das alter ... vektorname.getalter war mein erster versuch das lief aber nicht

p.s. danke für die schnelle antwort!
 
Also bei einem Vector (Java Platform SE 7 ) kannst du wie bei einem Array über die Indizes iterieren:

Java:
Vector<Kunde> kunden;

// wird hier irgendwo initialisiert und befüllt

int totalAge = 0;
for(int i = 0; i < kunden.size(); i++) {
    Kunde k = kunden.get(i);
    totalAge += k.getAge();
}

Was aber in Java bei vielen Collections möglich ist, ist das Iterieren mit einem sog. Iterator:

Java:
for(Iterator<Kunde> it = kunden.iterator(); it.hasNext();) {
    Kunde k = it.next();
    totalAge += k.getAge();
}

oder du nutzt die sog. "erweiterte" For-Schleife:
Java:
for(Kunde k : kunden) {
  totalAge += k.getAge();
}

In der API nachsehen, was für Methoden von den Klassen die man nutzt angeboten werden ist immer sehr hilfreich, weil man hier z.B. in deinem Fall über die get(int i), als auch über die iterator()-Methode stößt.

Edit:
[TIPP]Eine Collection wie deine Vector-Klasse, kann nicht direkt auf die Attribute der Objekte zugreifen, die du darin speicherst. Es stellt halt eine Sammlung deiner Objekte dar.[/TIPP]
 
Zuletzt bearbeitet:
danke,

habe die erweiterte genommen... allerdings wenn ich das ergebnis jetzt mit
Java:
((TextView)findViewById(R.id.mainProvision)).setText(""+Kunde.getsumAlter());
sagt es das ich die methode static machen soll... aber das ergibt doch keinen sinn?
 
Hey ich nochmal wie greife ich denn aus meiner mainActivity auf den einzelnen namen eines Kunden zu? ich hab in der klasse Kunde eine methode geschrieben:
Java:
	public String getPersonalName() {
		String name2 = new String();
		for(int i = 0; i < kunden.size(); i++) {
			name2 = kunden.elementAt(i).getName();
		}
		return name2;
	}

aber die returned mit immer null, ich befürchte das ich die schleife falsch habe
 
Also das was Machareder gepostet hat, bitte ignorieren, das macht die Schleife praktisch nutzlos.

Java:
 String name2 = new String();
        for(int i = 0; i < kunden.size(); i++) {
            name2 += kunden.elementAt(i).getName(); // Du musst die schon verketten: +=
        }
        return name2;

Wenn du da irgendwo null bekommst, dann musst du
a) Sicherstellen, dass kunden.elementAt(i) niemals null ist
b) dass getName() niemals null ergibt.
Wenn du dann die Strings verkettest, dann macht das vielleicht auch Sinn.

P.S. Trennzeichen wären auch nicht verkehrt, du willst die Namen ja auch irgendwie lesen können.
 

Neue Themen


Zurück
Oben