java wie erstelle array/matrix verschiedener Objekte
Ich bin ein bisschen verwirrt
Erstellte ich eine Klasse namens " person, die eine Alters-und name-Attribute (und set-Methoden).
Dann in einer anderen Klasse möchte ich ein array erstellen, die von Personen , wobei jede person hat ein anderes Alter und name.
Aber einige, wie in der end-alle meine Personen, die am Ende mit den letzten Namen und Alter.
Wenn ich manuell erstellen, dann ist es ok, aber mit einer for-Schleife habe ich das problem.
Was muss ich tun um unterschiedliche Personen?
Hier ist der code der Klasse person:
public class person {
static String name;
static int age;
public person() {
name="name";
age=0;
}
public static String getName() {
return name;
}
public static void setName(String name) {
person.name = name;
}
public static int getAge() {
return age;
}
public static void setAge(int age) {
person.age = age;
}
public static void main(String[] args) {
//TODO Auto-generated method stub
}
}
Und hier ist der code wo ich möchte mein array/matrix:
public class array {
static person[][] a;
public static void main(String[] args) {
a=new person[3][3];
//manual created person
person first=new person();
person second=new person();
person third=new person();
first.setAge(12);
first.setName("first");
second.setAge(20);
second.setName("second");
third.setAge(40);
third.setName("third");
//automatic (here I get the disired effect)
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length; j++) {
a[i][j]=new person();
a[i][j].setAge(10+j);
a[i][j].setName("Alia"+i);
System.out.println(i+" "+j+" "+a[i][j].getName()+" "+a[i][j].getAge());
}
}
// a[0][0]=first;
// a[0][1]=second;
// a[1][2]=third;
// System.out.println(a[0][0].getName()+" "+a[0][0].getAge());
//for checking , and it doesnt work anymore
System.out.println(a[0][0].getName()+" "+a[0][0].getAge());
// for (int i = 0; i < a.length; i++) {
// for (int j = 0; j < a.length; j++) {
// System.out.println(i+" "+j+" "+a[i][j].getName()+" "+a[i][j].getAge());
// }
//
// }
getname();
}
private static void getname() {
System.err.println("get name function");
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length; j++) {
System.out.println(a[i][j].getName());
}
}
}
}
InformationsquelleAutor ace | 2010-11-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entfernen Sie die
static
Schlüsselwort aus der Personen-Attribute. Wenn es statische es wird von alle Instanzen (alle person-Objekte).Aber ich würde es so machen:
InformationsquelleAutor dacwe
Ja, Ihre Attribute als static deklariert. Ein statisches Attribut "gehört" auf die Klasse, nicht die Instanzen, so dass alle Instanzen sehen, den gleichen String und int. Sie sollten in Ordnung sein, nur das entfernen der statisch aus alles sondern main(). Dann new Person() zugewiesen werden, werden neue separate Variablen für alle.
InformationsquelleAutor Ulrich Schwarz
Problem ist die statische Felder. Letzten Werte, die Ihnen zugewiesen werden würde, sich auf alle den Gegenstand.
InformationsquelleAutor Amit S