在vector中插入元素会更改所有其他元素

时间:2020-04-24 00:35:48

标签: java vector

我试图在一个已经有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...");

1 个答案:

答案 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...");
    }

}
相关问题