2013-07-21 52 views
-2

这是我的例子:是否可以在多维数组上执行算术运算?

int myMultiDimenArray[][] = {{4,5,6},{7,8,9}}; 
     for(int i=0;i<myMultiDimenArray.length;i++) 
     for(int j=0;j<myMultiDimenArray.length;j++) 
     { 
      arrayTotal+=myMultiDimenArray[i][j]; 
     } 
     System.out.println(arrayTotal); 

这只能打印出总共24

+1

你是什么意思的“你不知道它是如何发生的”? –

+0

你想获得数组中所有元素的总和吗? –

+0

@OliCharlesworth我希望它(即如果我的代码是正确的),打印出39个 –

回答

4

变化

for(int i=0;i<myMultiDimenArray.length;i++) 
     for(int j=0;j<myMultiDimenArray.length;j++) 
     { 
      arrayTotal+=myMultiDimenArray[i][j]; 
     } 
} 

for(int i=0;i<myMultiDimenArray.length;i++) 
     for(int j=0;j<myMultiDimenArray[i].length;j++) 
     { 
      arrayTotal+=myMultiDimenArray[i][j]; 
     } 
} 

在Java中多维数组是数组的数组。 myMultiDimenArray.length2,但是每个子阵列的长度为3。你正在计算4 + 5 + 7 + 8,等于24.

+0

@OjonugwaOchalifu确保[接受答案】(http://meta.stackexchange.com/a/5235/193053),帮助您最多。 – Jeffrey

1

你用错误的数组的长度比较j,所以j结束了的2代替3

j<myMultiDimenArray.length 

条件应为:

j<myMultiDimenArray[i].length 
+0

Exactly.I在做这一切wrong.Thanks –

1

尝试:

for(int i=0;i<myMultiDimenArray.length;i++) { 
     for(int j=0;j<myMultiDimenArray[i].length;j++) { 
      arrayTotal+=myMultiDimenArray[i][j]; 
     } 
} 

否则j0转到整个数组,而不是内部数组,你正在与i得到的长度。

+0

Wow..works就像一个魅力 –

2

你的循环的问题是内循环应该迭代第二维,而不是第一维。目前,您的代码迭代2x3数组的2x2子数组;这就是为什么你得到24代替39.

for(int i=0;i<myMultiDimenArray.length;i++) 
for(int j=0;j<myMultiDimenArray[i].length;j++) 
    { 
     arrayTotal+=myMultiDimenArray[i][j]; 
    }