Peuxt on comparer un null avec un élément en dehors du tableau ? (Java) [Résolu] - Java

A voir également:Peuxt on comparer un null avec un élément en dehors du tableau ? (java)Tester si un element existe dans un tableau java ✓ - Forum - Java Supprimer un élément d'un tableau java ✓ - Forum - Java Accès aux éléments d'un ArrayList en Java ✓ - Forum - Java Tableau associatif entrer un élément au début du tableau ✓ - Forum - Shell Comparer un text avec un tableau java ✓ - Forum - Java

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 :

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).

Forum

A voir également:Peuxt on comparer un null avec un élément en dehors du tableau ? (java)Tester si un element existe dans un tableau java ✓ - Forum - Java Supprimer un élément d'un tableau java ✓ - Forum - Java Accès aux éléments d'un ArrayList en Java ✓ - Forum - Java Tableau associatif entrer un élément au début du tableau ✓ - Forum - Shell Comparer un text avec un tableau java ✓ - Forum - Java

Web: www.shapebootstrap.net

1 réponse

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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
case
d'un
switch
tu devrais avoir un
break
pour t'arrêter, sinon tu vas faire tous les suivants.
4) il ne faut pas avoir de variables fourre-tout comme
position 
qui 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

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 56378 internautes nous ont dit merci ce mois-ci

Reply
réponses:
  • auteur

    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.

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed