Vecteur des Vecteurs
jackiehanane
Messages postés
2
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
j'etais d'entraine d'executer mon code, et j'ai touvé l'erreur : java.lang.NullPointerException, jai verifié plusiers fois mais je n'est aucune idée ou le problem se touve, mon code est d'ecrire une class matrice, qui cree un tabeau de type Vecteur(d'autre class) et ce tableau pointe sur plusiers tableau, j ai fait le remplissage de matrice et l'affichage mais la somme qui se pose le problem, merci :)
j'etais d'entraine d'executer mon code, et j'ai touvé l'erreur : java.lang.NullPointerException, jai verifié plusiers fois mais je n'est aucune idée ou le problem se touve, mon code est d'ecrire une class matrice, qui cree un tabeau de type Vecteur(d'autre class) et ce tableau pointe sur plusiers tableau, j ai fait le remplissage de matrice et l'affichage mais la somme qui se pose le problem, merci :)
import java.util.Scanner;
public class Matrice {
public Vecteur mat[];
public static int m;
static int i, j;
Scanner sc;
Matrice() {
m = 0;
mat = null;
}
Matrice(int m, int n) {
Matrice.m = m;
Vecteur.n = n;
mat = new Vecteur[100];
// mat[i]=new Vecteur(100);
}
public void remplir() {
mat = new Vecteur[100];
sc = new Scanner(System.in);
System.out.println("donner le nombre de votre ligne a lire");
Matrice.m = sc.nextInt();
System.out.println("donner le nombre de votre colonne a lire");
Vecteur.n = sc.nextInt();
for (j = 0; j < m; j++) {
mat[j] = new Vecteur(Vecteur.n);
mat[j].remplir();
}
}
public void affiche2() {
System.out.println("L'affichage de votre matrice");
for (i = 0; i < Vecteur.n; i++) {
mat[i].affiche();
}
}
public static void main(String args[]) {
Matrice Mat1 = new Matrice();
Matrice Mat2 = new Matrice();
Matrice Mat3 = new Matrice();
Mat1.remplir();
Mat1.affiche2();
Mat2.remplir();
Mat2.affiche2();
Mat3 = Matrice.somme(Mat1, Mat2);
Mat3.affiche2();
}
public static Matrice somme(Matrice mat1, Matrice mat2) {
Matrice mat3 = new Matrice();
for (j = 0; j < Vecteur.n; j++) {
for (i = 0; i < Matrice.m; i++) {
mat3.mat[i].t[j] = (mat1.mat[i].t[j]) + (mat2.mat[i].t[j]);
}
}
return mat3;
}
}
import java.util.Scanner;
public class Vecteur {
public static int n;
static int i;
static int j, k;
int t[];
static Scanner sc = new Scanner(System.in);
Vecteur(int n) {
Vecteur.n = n;
t = new int[100];
}
Vecteur() {
Vecteur.n = 0;
t = null;
}
public void remplir() {
t = new int[100];
sc = new Scanner(System.in);
/*
* System.out.println("donner le nombre d'element a lire"); n=sc.nextInt();
*/
for (i = 0; i < n; i++) {
System.out.println("donner le " + i + "° element a lire");
t[i] = sc.nextInt();
}
}
public void contenu(Vecteur Tab) {
i = 0;
j = 0;
if (n <= Tab.t.length) {
while (j < Tab.t.length) {
if (t[i] != Tab.t[j]) {
j++;
i = 0;
} else {
i++;
j++;
}
}
if (i > n) {
System.out.println("Le tableau 1 est contenu dans tableau 2");
} else {
System.out.println("Le tableau 1 n'est pas contenu dans tableau 2");
}
} else {
while (i < n) {
if (t[i] != Tab.t[j]) {
i++;
j = 0;
} else {
i++;
j++;
}
}
if (j > n) {
System.out.println("Le tableau 2 est contenu dans tableau 1");
} else {
System.out.println("Le tableau 2 n'est pas contenu dans tableau 1");
}
}
}
boolean appartient(int x) {
i = 0;
boolean trouve = false;
while ((i < n) && (t[i] != x)) {
i++;
}
if (i >= n)
System.out.println("le x n'appartient pas a votre Tableau");
else {
System.out.println("le x appartient a votre tableau");
trouve = true;
}
return trouve;
}
public void affiche() {
for (i = 0; i < n; i++) {
System.out.println(t[i]);
}
}
public void trier() {
int j, tmp;
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
if (t[i] > t[j]) {
tmp = t[i];
t[i] = t[j];
t[j] = tmp;
}
}
}
for (int i = 0; i < n; i++) {
System.out.println("Les élements de tableau aprés le trie sont " + t[i]);
}
}
void insere(int x) {
if (appartient(x) == true) {
System.out.println("L'insersion est impossible, La valeur existe deja!");
} else {
for (i = n; (i > 0) && (t[i - 1] > x); i--)
t[i] = t[i - 1];
/* VAL est copié à la position du dernier */
/* élément déplacé. */
t[i] = x;
n++;
for (i = 0; i < n; i++)
System.out.println(t[i]);
}
}
public static void fusionner(Vecteur tab1, Vecteur tab2) {
Vecteur FUS = new Vecteur(tab1.t.length + tab2.t.length);
i = 0;
j = 0;
k = 0;
while ((i < tab1.t.length) && (j < tab2.t.length))
if (tab1.t[i] < tab2.t[j]) {
FUS.t[k] = tab1.t[i];
k++;
i++;
} else {
FUS.t[k] = tab2.t[j];
k++;
j++;
}
/* Si IA ou IB sont arrivés à la fin de leur tableau, */
/* alors copier le reste de l'autre tableau. */
while (i < n) {
FUS.t[k] = tab1.t[i];
k++;
i++;
}
while (j < n) {
FUS.t[k] = tab2.t[j];
k++;
j++;
}
/* Edition du résultat */
System.out.println("Le tableau aprés le fusion est ");
for (k = 0; k < tab1.t.length + tab2.t.length; k++)
System.out.println(FUS.t[k]);
}
public static void main(String args[]) {
Vecteur tab1 = new Vecteur();
System.out.println("donner le nombre d'element a lire");
n = sc.nextInt();
tab1.remplir();
tab1.affiche();
tab1.trier();
Vecteur tab2 = new Vecteur();
tab2.remplir();
tab2.affiche();
tab2.trier();
fusionner(tab1, tab2);
tab1.contenu(tab2);
tab2.appartient(5);
tab1.insere(6);
}
}
1 réponse
Bonjour,
Merci d'utiliser les balises de code pour mettre en forme ton message, je l'ai réédité pour que ça ressemble à quelque chose...
Quant à ton NullPointerException il vient de ta mauvaise utilisation du constructeur, faire
Utilises uniquement ton constructeur (int m, int n) et rien d'autre...
Il y a également plein d'autres monstruosité dans ton code, mais je ne vais pas les lister ce soir... trop long ! Mais par exemple mettre des variables de boucles i, j, etc. en static c'est catastrophique !
Merci d'utiliser les balises de code pour mettre en forme ton message, je l'ai réédité pour que ça ressemble à quelque chose...
Quant à ton NullPointerException il vient de ta mauvaise utilisation du constructeur, faire
mat = null;est une très mauvaise pratique !
Utilises uniquement ton constructeur (int m, int n) et rien d'autre...
Il y a également plein d'autres monstruosité dans ton code, mais je ne vais pas les lister ce soir... trop long ! Mais par exemple mettre des variables de boucles i, j, etc. en static c'est catastrophique !
jackiehanane
Messages postés
2
Statut
Membre
Merci beaucoup monsieur, j'ai suivi votre conseille et j'ai fait quelque mdifications, et cette fois l'erreur est dans la ligne 57, NullPointeurs, je peux savoir pourquoi? merci beaucoup pour votre aide.
KX
Messages postés
19031
Statut
Modérateur
3 020
Ton code est décalé par rapport à celui écrit dans le forum, à quelle ligne de code correspond la ligne 57 chez toi ?