Bonsoir.
Je vous sollicite pour résoudre un problème .
J'ai un tableau à 2 dimensions, je cherche à trouver s'il y a un creux au niveau de la 1ère ou la dernière ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
class Cloture {
    public static void main(String[] args) {
        int[][] carte = {
        		{0,0,0,1,1,0,1,1},
        		{0,0,0,1,1,1,1,1},
        		{0,0,0,1,1,1,1,1},
        		{0,0,0,1,1,1,1,1},
        		{0,0,0,1,1,1,1,1},
 
        }; 
 
 
int tablo[][]={carte[0],carte[carte.length-1]};
int x=0;
    for(int i=0; i<tablo.length;i++)
 
    {
    	for(int j=0;j<tablo[i].length-1;j++)
    	{
    		if(tablo[i][j]-tablo[i][j+1]==1)
    			{
    				x=j+1;
    				for(int k=x;k<tablo[i].length-1;k++)
    					if(tablo[i][k]-tablo[i][k+1]==-1)
    					{
 
    					    if(i==tablo.length-1)
    					    {
    					    	i=carte.length-1;
    					    }
    					    System.out.println("Creux au niveau de" );
    					    System.out.println("ligne "+(i+1));
    					    System.out.println("colonne "+(x+1));
 
    					}
 
    		}
    	}
    }
 
 
 
    }
}
là pas de problème, ça donne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Creux au niveau de
ligne 1
colonne 6
mais si le creux existe dans la dernière ligne, il trouve le creux mais donne un message d'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
int[][] carte = {
        		{0,0,0,1,1,1,1,1},
        		{0,0,0,1,1,1,1,1},
        		{0,0,0,1,1,1,1,1},
        		{0,0,0,1,1,1,1,1},
        		{0,1,0,1,1,1,1,1},
 
        };
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Creux au niveau de
ligne 5
colonne 3
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
	at Cloture.main(Cloture.java:24)
NB: je passe par la variable tablo, car on peur avoir int [ ][ ] carte= new int [200][300];
Merci