Re: [問題] 雙層for迴圈 i j 相反

作者: adrianshum (Alien)   2015-06-09 15:25:48
※ 引述《drcula (Son of SUN)》之銘言:
: 借版友的問題,想求助一下
: 弟做了一個10x10的二維陣列,由0~99這100個數字填滿的二維陣列
: 目前已經完成可顯示由0~99這樣的二維陣列
: 但我還需要在最後將這二維陣列的所有值加總,在這加總上卻遇上點問題
: 弟的程式碼如下
: public static void main(String[] args)
: { int i,j =0 ;
: int sum = 0 ;
: int arr[][];
: arr = new int[10][10];
: { for( i = 0; i < 10; i++)
: { for(j = 0; j < 10; j++)
: arr[i][j] = 10*i+j ;
: }
: }
: { for( i = 0; i < 10; i++)
: { for(j = 0; j < 10; j++)
: System.out.print(arr[i][j] + " ");
: System.out.println();
: }
: }
: sum +=arr[i][j];
: System.out.println("Sum = " + sum);
: }
: 顯示是
: 0 1 2 3 4 5 6 7 8 9
: 10 11 12 13 14 15 16 17 18 19
: .
: .
: .
: 90 91 92 93 94 95 96 97 98 99
: 找書或上網查關於加總的部份
: 錯誤的原因可能是,數組越界?
: 不知道有沒有大大能提示看看解決的方法,感激不盡
首先,你的 code 排版可怕得不得了。
你的 code 如果依正常排版會是
public static void main(String[] args) {
int i,j =0 ;
int sum = 0 ;
int arr[][];
arr = new int[10][10];
{
for( i = 0; i < 10; i++) {
for(j = 0; j < 10; j++)
arr[i][j] = 10*i+j ;
}
}
{
for( i = 0; i < 10; i++) {
for(j = 0; j < 10; j++)
System.out.print(arr[i][j] + " ");
System.out.println();
}
}
sum +=arr[i][j];
System.out.println("Sum = " + sum);
}
for 外面有個意義不明的 block, 第二個 for loop 第二層裡面的縮排
也是極為誤導。
另外你的 "顯示" 也沒有把重點貼出來 (Sum= ??? 那句在哪?還是有 Exception?
我猜是有出現 Array Out Of Bound Exception 吧?
問題其實排好版就很明顯:你的 sum+= arr[i][j]; 應該在哪做的?
找個 IDE, 開個 debugger,跟著一步步跑一次,很容易就會知道問題在哪了
我猜你想寫的是:
public static void main(String[] args) {
int sum = 0 ;
int arr[][] = new int[10][10];
for( int i = 0; i < 10; i++) {
for(int j = 0; j < 10; j++) {
arr[i][j] = 10*i+j ;
}
}
for( i = 0; i < 10; i++) {
for(j = 0; j < 10; j++) {
System.out.print(arr[i][j] + " ");
sum += arr[i][j];
}
System.out.println();
}
System.out.println("Sum = " + sum);
}
作者: cha122977 (CHA)   2015-06-10 14:24:00
應該是這意思沒錯...
作者: drcula (Son of SUN)   2015-06-10 16:30:00
感謝前輩指導,一次解決,甚至連後面的一些延申的也茅塞頓開

Links booklink

Contact Us: admin [ a t ] ucptt.com