2015-02-09 32 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++)然后它将工作。