我试图在一个已经有2个向量中插入一个新元素。当我写insertElementAt(pers,1)
时,向量中的所有其他元素都变成了我刚刚插入的元素。我什至尝试使用addElement
,它也更改了向量中已有的其他对象。
Vector <Personne> Vect = new <Personne> Vector(); {
Personne pers = new Personne(); {
for(int i=0; i<2; i++) {
Vect.addElement(pers);
System.out.println("Entrez le nom de la personne: ");
pers.setNom(sc.next());
System.out.println("Entrez le sexe de la personne (M/F): ");
pers.setSexe(sc.next().charAt(0));
System.out.println("Entrez le poid de la personne: ");
pers.setPoids(sc.nextDouble());
System.out.println("Entrez la taille de la personne: ");
pers.setTaille(sc.nextDouble());
}
System.out.println("Il y a " +Vect.size()+ " personnes dans le vecteur"+"\r\n");
int j = 1;
for(int i =0; i<2; i++) {
System.out.println("Personne "+j);
System.out.println("Nom: "+Vect.elementAt(i).getNom());
System.out.println("Sexe: "+Vect.elementAt(i).getSexe());
System.out.println("Poids: "+Vect.elementAt(i).getPoids());
System.out.println("Taille: "+Vect.elementAt(i).getTaille());
System.out.println();
j++;
}
Vect.insertElementAt(pers, 1);
System.out.println("Entrez le nom de la personne: ");
pers.setNom(sc.next());
System.out.println("Entrez le sexe de la personne (M/F): ");
pers.setSexe(sc.next().charAt(0));
System.out.println("Entrez le poid de la personne: ");
pers.setPoids(sc.nextDouble());
System.out.println("Entrez la taille de la personne: ");
pers.setTaille(sc.nextDouble());
System.out.println("Ajout d'une personne a l'indice 2...");
答案 0 :(得分:0)
问题是您正在重用相同的Personne对象。您需要为每个新的Personne实例化一个新的Personne对象。
这是固定版本:
class Personne
{
String nom;
char sexe;
double poids;
double taille;
public Personne()
{
// do nothing
}
public String getNom()
{
return nom;
}
public char getSexe()
{
return sexe;
}
public double getPoids()
{
return poids;
}
public double getTaille()
{
return taille;
}
public void setNom(String nom)
{
this.nom = nom;
}
public void setSexe(char sexe)
{
this.sexe = sexe;
}
public void setPoids(double poids)
{
this.poids = poids;
}
public void setTaille(double taille)
{
this.taille = taille;
}
}
public class MyVector
{
public static void main(String[] args)
{
Vector<Personne> Vect = new <Personne>Vector();
Scanner sc = new Scanner(System.in);
Personne pers = null;
for (int i = 0; i < 2; i++)
{
pers = new Personne();
Vect.addElement(pers);
System.out.println("Entrez le nom de la personne: ");
pers.setNom(sc.next());
System.out.println("Entrez le sexe de la personne (M/F): ");
pers.setSexe(sc.next().charAt(0));
System.out.println("Entrez le poid de la personne: ");
pers.setPoids(sc.nextDouble());
System.out.println("Entrez la taille de la personne: ");
pers.setTaille(sc.nextDouble());
}
System.out.println("Il y a " + Vect.size() + " personnes dans le vecteur" + "\r\n");
int j = 1;
for (int i = 0; i < 2; i++)
{
System.out.println("Personne " + j);
System.out.println("Nom: " + Vect.elementAt(i).getNom());
System.out.println("Sexe: " + Vect.elementAt(i).getSexe());
System.out.println("Poids: " + Vect.elementAt(i).getPoids());
System.out.println("Taille: " + Vect.elementAt(i).getTaille());
System.out.println();
j++;
}
Vect.insertElementAt(pers, 1);
System.out.println("Entrez le nom de la personne: ");
pers.setNom(sc.next());
System.out.println("Entrez le sexe de la personne (M/F): ");
pers.setSexe(sc.next().charAt(0));
System.out.println("Entrez le poid de la personne: ");
pers.setPoids(sc.nextDouble());
System.out.println("Entrez la taille de la personne: ");
pers.setTaille(sc.nextDouble());
System.out.println("Ajout d'une personne a l'indice 2...");
}
}