2015-02-09 36 views
-2

/*我把兩個變量與數組的初始值進行比較,以便我們可以比較最大和最小no。然後循環檢查每個數組的數量與默認的大小,如果不是然後將被替換,但爲什麼我的答案出錯了? */打印數組中的最小和最大的no(java)

class twod { 

    public static void main(String ...NR){ 

     int a[][] = {{11,21,31},{9,22,23}}; 
     int maximum = a[0][0]; 
     int minimum = a[0][0]; 

     for(int i=0;i<a.length;i++){  

      for(int j=0;j<a.length;j++){ 
       if(a[i][j]>maximum){ 
        maximum = a[i][j]; 
       } 
       else if(a[i][j]<minimum){ 
        minimum = a[i][j]; 
       } 
      } 
     } 
     System.out.println("Largest no is " + maximum); 
     System.out.println("Smallest no is " + minimum); 
    } 

} 
+0

在循環中使用一些打印語句來查看變量在任何給定點處的變化,並且您應該看到發生了什麼問題。 – csmckelvey 2015-02-09 19:01:30

+0

你應該嘗試計算你實際進入內循環的次數。 – Compass 2015-02-09 19:03:00

+0

打印結果如下:'intL @ 193747'對不對? – Mordechai 2015-02-09 19:05:42

回答

0

你的內環僅循環j通過ij<a.length)的有效值,這是0-1,而不是0-2。

循環遍歷a[i]數組的有效索引值,而不是a數組的有效索引值。更改

for(int j=0;j<a.length;j++){ 

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

ohh明白了,好吧,它也可以作爲 for(int j = 0; j <= a.length; j ++)..... 以及我第一次看到這樣的聲明「j user3651808 2015-02-09 19:37:57

+0

如果'i'是'1',那麼'a [i]'指的是{9,22,23},'a [i] .length'是'3'。 – rgettman 2015-02-09 19:41:01

0

在你的代碼for(int j=0;j<a.length;j++)這裏a.length = 2。所以它不會檢查下一個數字。

將其更改爲for(int j=0;j<a[i].length;j++)然後它將工作。