Вставка элемента в вектор меняет все остальные элементы - PullRequest
1 голос
/ 24 апреля 2020

Я попытался вставить новый элемент в вектор, который уже имеет 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 голосов
/ 24 апреля 2020

Проблема в том, что вы повторно используете один и тот же объект 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...");
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...