2013-07-21 51 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]; 
    }