日期:2014-05-20  浏览次数:20841 次

比较三维数组中的元素
【急】有一个三维数组,每一个索引相对有三个值例如:int[0][0][value]={1,2,2,3};我想比较其中的元素,但抛出异常Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at yan.Test.twoGrade(Test.java:95)
at yan.Test.main(Test.java:116)
,我比较的代码如下: for(int x = 0; x < arr.length; x++){
for(int y = 0; y < arr[x].length; y++){
for(int z = 0; z <arr[x][y].length; z++){ 
if(arr[x][y][z]==arr[x][y][z+1]){
//grade=grade+20;
System.out.println("第" + x + "行,第" + y +"列的第" + z + "个数据是:" + arr[x][y][z]);
System.out.println("违约分数为"+100);
}
if(Math.abs(arr[x][y][z+1]-arr[x][y][z])==1 && Math.abs(arr[x][y][z-1]-arr[x][y][z])==1){
System.out.println("第" + x + "行,第" + y +"列的第" + z + "个数据是:" + arr[x][y][z]);
System.out.println("违约分数为"+50);
}
//}
}
}
}
求高人指点,谢谢!!!

------解决方案--------------------
探讨
if(Math.abs(arr[x][y][z+1]-arr[x][y][z])==1 && Math.abs(arr[x][y][z-1]-arr[x][y][z])==1){

------解决方案--------------------
if(arr[x][y][z]==arr[x][y][z+1]){
if(Math.abs(arr[x][y][z+1]-arr[x][y][z])==1 
同理z+1会越界。
------解决方案--------------------
最简单的办法就是多加几个if else语句
Java code

for(int x = 0; x < arr.length; x++){
for(int y = 0; y < arr[x].length; y++){
for(int z = 0; z <arr[x][y].length; z++){ 
if(arr[x][y][z]==arr[x][y][z+1]){
if(z+1 > arr[x][y].length-1){
System.out.println("越界");
}
else{
//grade=grade+20;
System.out.println("第" + x + "行,第" + y +"列的第" + z + "个数据是:" + arr[x][y][z]);
System.out.println("违约分数为"+100);
}

}
if(Math.abs(arr[x][y][z+1]-arr[x][y][z])==1 && Math.abs(arr[x][y][z-1]-arr[x][y][z])==1){
if(z + 1 > arr[x][y].length-1 && z - 1>=0){
System.out.println("越界");
}
else{
System.out.println("第" + x + "行,第" + y +"列的第" + z + "个数据是:" + arr[x][y][z]);
System.out.println("违约分数为"+50);
}

}
//}
}
}
}

------解决方案--------------------
探讨

那我该怎么不让它越界那?