Peuxt on comparer un null avec un élément en dehors du tableau ? (Java)
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjours à tous.
J'aimerais savoir si il est possible de pouvoir comparer un élément qui est en dehors du tableau avec un null. Afin de pouvoir sortir d'une boucle "while", j'aurais besoin d'une méthode me permettant de le faire.
Voici mon code :
J'ai mis cette condition :
afin d'échapper à un "ArrayIndexOutOfBoundsException". Mais cela ne fonctionne pas.
Quelqu'un aurais une astuce ?
(Le but de mon projet est de crée un tableau permettant de faire une spirale en 2D).
J'aimerais savoir si il est possible de pouvoir comparer un élément qui est en dehors du tableau avec un null. Afin de pouvoir sortir d'une boucle "while", j'aurais besoin d'une méthode me permettant de le faire.
Voici mon code :
public static void main(String[] args) { boolean fin = false; int hauteur = 5, largeur = 5; int[][] tab = new int[hauteur][largeur]; int parcours = 0, position = largeur - 1, maxLong = hauteur - 1, maxLarg = largeur - 1, minLong = 0, minLarg = 0, i, j; for (i = 0; i < hauteur; i++) { for (j = 0; j < largeur; j++) { tab[i][j] = 0; } } while (!(fin)) { switch (parcours) { case 0: for (i = position; i >= minLarg; i--) { tab[minLong][i] = 1; } position = minLong; minLong++; case 1: for (i = position; i <= maxLong; i++) { tab[i][minLarg] = 1; } position = minLarg; minLarg++; case 2: for (i = position; i <= maxLarg; i++) { tab[maxLong][i] = 1; } position = maxLong; maxLong--; case 3: for (i = position; i >= minLong; i--) { tab[i][maxLarg] = 1; } position = maxLarg; minLarg++; } parcours++; if (parcours == 4) { parcours = 0; } if (position <= hauteur && position <= largeur && position >= 0 && tab[position][minLarg] <= 0 && tab[position][maxLarg] <= 0 && tab[minLong][position] <= 0 && tab[maxLong][position] <= 0) { fin = true; } } for (i = 0; i < hauteur; i++) { for (j = 0; j < largeur; j++) { System.out.println(tab[i][j]); } } }
J'ai mis cette condition :
if (position <= hauteur && position <= largeur && position >= 0 && tab[position][minLarg] <= 0 && tab[position][maxLarg] <= 0 && tab[minLong][position] <= 0 && tab[maxLong][position] <= 0) { fin = true; }
afin d'échapper à un "ArrayIndexOutOfBoundsException". Mais cela ne fonctionne pas.
Quelqu'un aurais une astuce ?
(Le but de mon projet est de crée un tableau permettant de faire une spirale en 2D).
A voir également:
- Peuxt on comparer un null avec un élément en dehors du tableau ? (Java)
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
1 réponse
Bonjour,
"J'aimerais savoir si il est possible de pouvoir comparer un élément qui est en dehors du tableau avec un null. "
Je ne comprends pas le sens de la question, ou alors si je comprends, mais quand on arrive à ce genre de question c'est qu'on s'est forcément trompé quelque part avant...
Ici ta condition de fin c'est quand ton minLarg devient plus grand que ton maxLarg ou que ton minLong devient plus grand que ton maxLong
Mais il y a d'autres erreurs dans ton code :
1) tu ne devrais pas déclarer toutes tes variables au début du programme, fait le au fur au mesure, quand tu en as vraiment besoin dans le code.
2) l'initialisation du tableau avec des valeurs 0 est inutile puisque Java le fait déjà lui même
3) pour chaque
4) il ne faut pas avoir de variables fourre-tout comme
Remarque : en informatique (ou en maths avec les matrices) on parlera plutôt de largeur et hauteur.
Un exemple :
Ce qui donne un affichage détaillé des différentes étapes :
"J'aimerais savoir si il est possible de pouvoir comparer un élément qui est en dehors du tableau avec un null. "
Je ne comprends pas le sens de la question, ou alors si je comprends, mais quand on arrive à ce genre de question c'est qu'on s'est forcément trompé quelque part avant...
Ici ta condition de fin c'est quand ton minLarg devient plus grand que ton maxLarg ou que ton minLong devient plus grand que ton maxLong
Mais il y a d'autres erreurs dans ton code :
1) tu ne devrais pas déclarer toutes tes variables au début du programme, fait le au fur au mesure, quand tu en as vraiment besoin dans le code.
2) l'initialisation du tableau avec des valeurs 0 est inutile puisque Java le fait déjà lui même
3) pour chaque
cased'un
switchtu devrais avoir un
breakpour t'arrêter, sinon tu vas faire tous les suivants.
4) il ne faut pas avoir de variables fourre-tout comme
positionqui va valoir minLong puis minLarg, etc. Parce que l'on ne sait plus si la position c'est une largeur ou une longueur.
Remarque : en informatique (ou en maths avec les matrices) on parlera plutôt de largeur et hauteur.
Un exemple :
public class Main { public static void main(String[] args) { final int HEIGHT = 5, WIDTH = 5; int[][] tab = new int[WIDTH][HEIGHT]; for (int step=0, north=0, west=0, south=HEIGHT-1, east=WIDTH-1; west <= east && north <= south; step++) { switch (step % 4) { case 0: // north for (int x = west; x <= east; x++) { tab[x][north] = step + 1; } north++; break; case 1: // east for (int y = north; y <= south; y++) { tab[east][y] = step + 1; } east--; break; case 2: // south for (int x = west; x <= east; x++) { tab[x][south] = step + 1; } south--; break; case 3: // west for (int y = north; y <= south; y++) { tab[west][y] = step + 1; } west++; break; } for (int y = 0; y < HEIGHT; y++) { for (int x = 0; x < WIDTH; x++) { System.out.print(tab[x][y]); } System.out.println(); } System.out.println(); } } }
Ce qui donne un affichage détaillé des différentes étapes :
11111
00000
00000
00000
00000
11111
00002
00002
00002
00002
11111
00002
00002
00002
33332
11111
40002
40002
40002
33332
11111
45552
40002
40002
33332
11111
45552
40062
40062
33332
11111
45552
40062
47762
33332
11111
45552
48062
47762
33332
11111
45552
48962
47762
33332
Utilisateur anonyme
Un grand merci KX, pour avez mis en lumière toute mes fautes et de les corriger. Et surtout un tout grand merci pour avoir pris le temps de me montrer les bonnes manières de le faire.