Manipuler des ensembles finis de type E quelconque - La classe Vector<E>

Résolu/Fermé
Ghostleader2001 Messages postés 5 Date d'inscription dimanche 29 avril 2018 Statut Membre Dernière intervention 3 juin 2020 - Modifié le 8 déc. 2019 à 20:16
Ghostleader2001 Messages postés 5 Date d'inscription dimanche 29 avril 2018 Statut Membre Dernière intervention 3 juin 2020 - 9 déc. 2019 à 10:12
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 ? :)
A voir également:

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
9 déc. 2019 à 08:17
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."
1
Ghostleader2001 Messages postés 5 Date d'inscription dimanche 29 avril 2018 Statut Membre Dernière intervention 3 juin 2020
Modifié le 9 déc. 2019 à 10:16
KX
Merci ça a marché !!
0
CrazyGeekMan Messages postés 871 Date d'inscription dimanche 1 novembre 2015 Statut Membre Dernière intervention 29 octobre 2022 131
8 déc. 2019 à 21:42
Bonsoir,

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

this.e = null; //ce n'est pas suffisant
0
Ghostleader2001 Messages postés 5 Date d'inscription dimanche 29 avril 2018 Statut Membre Dernière intervention 3 juin 2020
8 déc. 2019 à 23:23
L'allocation ne se fait pas automatiquement d'habitude ?
Tu pourrais m'éclairer un peu steuplait ?
0