Manipuler des ensembles finis de type E quelconque - La classe Vector<E> [Résolu]

Signaler
Messages postés
4
Date d'inscription
dimanche 29 avril 2018
Statut
Membre
Dernière intervention
9 décembre 2019
-
Ghostleader2001
Messages postés
4
Date d'inscription
dimanche 29 avril 2018
Statut
Membre
Dernière intervention
9 décembre 2019
-
Bonjour,

Pour manipuler des ensembles finis d'éléments, par exemple A = {-4, 5, 2}

J'ai une classe "Ensemble<E>" qui permet d'ajouter, et de faire un tas de choses sur des éléments d'un ensemble A.

Mais lorsque j'essaie d'y ajouter des éléments, j'ai une exception : "java.lang.NullPointerException"

Ça fait un moment que je cherche le problème en vain !
public class Ensemble<E>
implements Cloneable {

private Vector<E> e; // elements d'un ensemble


//contructeur
public Ensemble() {
this.e = null;
}

//b - verife si x appartient à un ensemble
public boolean appartient(E x) {
if (this.e.contains(x))
return true;
else
return false;
}

//c - ajoute x a un ensemble
public boolean ajouter(E x) {
if (this.e.contains(x))
return false;
else
this.e.add(x);

return true;
}
}


Et le "Main" lorsque j'essaie d'afficher un ensemble

public class Main {

public static void main(String[] args) {

Ensemble<Integer> A = new Ensemble<Integer>(2);

A.ajouter(1);
A.ajouter(5);

System.out.println(A);
}


Est-ce que quelqu'un pourrait m'aider svp ? :)

2 réponses

Messages postés
16104
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 janvier 2020
2 503
Bonjour,

Dans ton main tu fais
Ensemble<Integer> A = new Ensemble<Integer>(2);
tu as donc bien pensé à lier la référence A à un nouvel objet que tu construis.
Il faut faire pareil avec
Vector<E> e
et le lier à un nouvel objet
new Vector<E>();
mais pas à null.

Remarque : la classe Vector ne devrait plus être utilisée depuis Java 2 ! Elle est à remplacer par ArrayList.
https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/util/Vector.html

"As of the Java 2 platform v1.2, this class was retrofitted to implement the List interface, making it a member of the Java Collections Framework. Unlike the new collection implementations, Vector is synchronized. If a thread-safe implementation is not needed, it is recommended to use ArrayList in place of Vector."
Ghostleader2001
Messages postés
4
Date d'inscription
dimanche 29 avril 2018
Statut
Membre
Dernière intervention
9 décembre 2019

KX
Merci ça a marché !!
Messages postés
836
Date d'inscription
dimanche 1 novembre 2015
Statut
Membre
Dernière intervention
24 janvier 2020
55
Bonsoir,

À quel moment t'alloues de la mémoire pour e ?

this.e = null; //ce n'est pas suffisant
Ghostleader2001
Messages postés
4
Date d'inscription
dimanche 29 avril 2018
Statut
Membre
Dernière intervention
9 décembre 2019

L'allocation ne se fait pas automatiquement d'habitude ?
Tu pourrais m'éclairer un peu steuplait ?