Java 在向量中插入一个元素会更改所有其他元素

Java 在向量中插入一个元素会更改所有其他元素,java,vector,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.a

我试着在已经有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...");
Vector Vect=new Vector();{ 
人员pers=新人员(){

对于(int i=0;i而言,问题在于您正在重用相同的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...");
    }

}
class人员
{
字符串名称;
炭色;
双点;
双尾;
公职人员()
{
//无所事事
}
公共字符串getNom()
{
返回名称;
}
公共字符getSexe()
{
回归性;
}
公共双getpoid()
{
返回POID;
}
公共双gettaile()
{
回程尾流;
}
公共无效集合名(字符串名)
{
this.nom=nom;
}
公共void setSexe(字符sexe)
{
this.sexe=sexe;
}
公共无效设置点(双点)
{
this.poids=poids;
}
公共空间设置尾板(双尾板)
{
this.taille=taille;
}
}
公共类MyVector
{
公共静态void main(字符串[]args)
{
向量Vect=新向量();
扫描仪sc=新的扫描仪(System.in);
Personne pers=null;
对于(int i=0;i<2;i++)
{
pers=新员工();
矢量加法(pers);
系统输出打印号(“个人姓名”);
pers.setNom(sc.next());
系统输出打印号(“员工中心(M/F):”;
pers.setSexe(sc.next().charAt(0));
系统输出打印(Entrez le poid de la personne:);
pers.setPoids(sc.nextDouble());
系统输出打印(Entrez la taille de la personne:);
pers.setTaille(sc.nextDouble());
}
System.out.println(“Il y a”+向量大小()+“personnes dans le vecteur”+”\r\n”);
int j=1;
对于(int i=0;i<2;i++)
{
系统输出打印项次(“人员”+j);
System.out.println(“Nom:+Vect.elementAt(i.getNom());
System.out.println(“Sexe:+Vect.elementAt(i.getSexe());
System.out.println(“POID:+Vect.elementAt(i).getPOID());
System.out.println(“Taille:+Vect.elementAt(i.getTaille());
System.out.println();
j++;
}
向量插入器(pers,1);
系统输出打印号(“个人姓名”);
pers.setNom(sc.next());
系统输出打印号(“员工中心(M/F):”;
pers.setSexe(sc.next().charAt(0));
系统输出打印(Entrez le poid de la personne:);
pers.setPoids(sc.nextDouble());
系统输出打印(Entrez la taille de la personne:);
pers.setTaille(sc.nextDouble());
System.out.println(“人员指示2…”);
}
}

问题是您正在重用相同的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...");
    }

}
class人员
{
字符串名称;
炭色;
双点;
双尾;
公职人员()
{
//无所事事
}
公共字符串getNom()
{
返回名称;
}
公共字符getSexe()
{
回归性;
}
公共双getpoid()
{
返回POID;
}
公共双gettaile()
{
回程尾流;
}
公共无效集合名(字符串名)
{
this.nom=nom;
}
公共void setSexe(字符sexe)
{
this.sexe=sexe;
}
公共无效设置点(双点)
{
this.poids=poids;
}
公共空间设置尾板(双尾板)
{
this.taille=taille;
}
}
公共类MyVector
{
公共静态void main(字符串[]args)
{
向量Vect=新向量();
扫描仪sc=新的扫描仪(System.in);
Personne pers=null;
对于(int i=0;i<2;i++)
{
pers=新员工();
矢量加法(pers);
系统输出打印号(“个人姓名”);
pers.setNom(sc.next());
系统输出打印号(“员工中心(M/F):”;
pers.setSexe(sc.next().charAt(0));
系统输出打印(Entrez le poid de la personne:);
pers.setPoids(sc.nextDouble());
系统输出打印(Entrez la taille de la personne:);
pers.setTaille(sc.nextDouble());
}
System.out.println(“Il y a”+向量大小()+“personnes dans le vecteur”+”\r\n”);
int j=1;
对于(int i=0;i<2;i++)
{
系统输出打印项次(“人员”+j);
System.out.println(“Nom:+Vect.elementAt(i.getNom());
System.out.println(“Sexe:+Vect.elementAt(i.getSexe());
System.out.println(“POID:+Vect.elementAt(i).getPOID());
System.out.println(“Taille:+Vect.elementAt(i.getTaille());
System.out.println();
j++;
}
向量插入器(pers,1);
系统输出打印号(“个人姓名”);
pers.setNom(sc.next());
系统输出打印号(“员工中心(M/F):”;
pers.setSexe(sc.next().charAt(0));
系统输出打印(Entrez le poid de la personne:);
pers.setPoids(sc.nextDouble());
系统输出打印(Entrez la taille de la personne:);
pers.setTaille(sc.nextDouble());
System.out.println(“人员指示2…”);
}
}

@Mr.Radish请不要忘记投票,如果您对答案感到满意,请接受答案。:)哦,我没有这么做