class Matrix2{ public static void main(String args[]) {  int m[][]={{6,2,24},{-5,8,7,6},{-3,-18,-4,1,66}};  int row=0;  int col=0;  int row2=0;  int col2=0;  int max,min,sum=0;  max=m[0][0];  min=m[0][0];  System.out.println("该二维数组中的最高维数为:"+m.length);  System.out.println("该二维数组中的元素有:");  for(int i=0;i<m.length;i++)  {   for(int j=0;j<m.length;j++)   System.out.println(m[i][j]+"\t");   System.out.println();
  
  }  System.out.println();  for(int i=0;i<m.length;i++)  {   for(int j=0;j<m[i].length;j++)   {    sum+=m[i][j];    if(m[i][j]>max)    {     max=m[i][j];     row=i;     col=j;    }    if(m[i][j]<min)    {     min=m[i][j];
  
     row2=i;     col2=j;    }
   
   }
  
  }    System.out.println("所有元素的和为:"+sum);    System.out.println("最大的元素的值为:"+max);    System.out.println("该元素的位置在:"+row+"行,"+col+"列");    System.out.println("最小的元素值为:"+min);    System.out.println("该元素的位置在:"+row2+"行,"+col2+"列"); }
 
}
教材上的这段程序似懂非懂的,哪位大侠能逐行解释下啊。谢谢啊O(∩_∩)O~

解决方案 »

  1.   

    你的上面代码可能少了
    第17行for(int j=0;j <m.length;j++) 可能是for(int j=0;j <m[i].length;j++)
      

  2.   


    class Matrix2 { public static void main(String args[]) {   int m[][]={{6,2,24},{-5,8,7,6},{-3,-18,-4,1,66}};  //初始化一个二维数组  int row=0;                                         //用来标记最大值的在二维数组中的行号
                               
      int col=0;                                         //用来标记最大值的在二维数组中的列号  int row2=0;                                        //用来标记最小值的在二维数组中的行号  int col2=0;                                        //用来标记最小值的在二维数组中的列号  int max,min,sum=0;   max=m[0][0];   min=m[0][0];   System.out.println("该二维数组中的最高维数为:"+m.length);   System.out.println("该二维数组中的元素有:");   for(int i=0;i <m.length;i++)                 //循环打印出二维数组中的每个值  {   for(int j=0;j <m.length;j++)                //改成j<m[i].length  System.out.println(m[i][j]+"\t");   System.out.println(); 
      
      }   System.out.println();   for(int i=0;i <m.length;i++)   {   for(int j=0;j <m[i].length;j++)                    {     sum+=m[i][j];                                //数组中所有数的和    if(m[i][j]>max)                              //循环找出数组中最大值    {     max=m[i][j];     row=i;     col=j;     }     if(m[i][j] <min)                          //循环找出数组中最小值    {     min=m[i][j]; 
      
        row2=i;     col2=j;     } 
      
      } 
      
      }     System.out.println("所有元素的和为:"+sum);     System.out.println("最大的元素的值为:"+max);     System.out.println("该元素的位置在:"+row+"行,"+col+"列");     System.out.println("最小的元素值为:"+min);     System.out.println("该元素的位置在:"+row2+"行,"+col2+"列"); 
    } } 
      

  3.   

    七夜雪@月大侠:   两个System.out.println()的含义是什么?还有循环求最大最小时,具体是怎么实现的呢?max(或min)并没有具体的值,这样怎么比较啊?谢谢您的赐教,谢谢啊O(∩_∩)O~
      

  4.   

    System.out.println(m[i][j]+"\t");   System.out.println(); 
    ||打印输出二维数组啊,\t是格式控制符。就是把int m[][]={{6,2,24},{-5,8,7,6},{-3,-18,-4,1,66}};  这个二维数组按格式输出,并换行。
      

  5.   

    System.out.println()就是换行的意思
    max=m[0][0]; 
    min=m[0][0];
    把数组的第一个数赋值给最大值和最小值,
    循环遍历整个数组 
     for(int i=0;i <m.length;i++) 
      { 
      for(int j=0;j <m[i].length;j++) 
     如果有比第一个数大的数字就把它赋值给max,此后的循环中如有比max还大的值,就把它赋值给max
    max=m[i][j]; 
    如果有比第一个数小的数字就把它赋值给min
    min=m[i,j];
      

  6.   

    你再仔细看看 怎么会没有赋值呢max=m[0][0];  min=m[0][0]; 这2个不是赋值语句么?
    System.out.println(m[i][j]+"\t"); 
    打印输出二维数组啊,\t是格式控制符。就是把int m[][]={{6,2,24},{-5,8,7,6},{-3,-18,-4,1,66}};  这个二维数组按格式输出,并换行。
    至于
    System.out.println()就是空一行了 每输出一个数组就空一行
      

  7.   

    循环求最大最小是根据和第一个数字对比如果比它小那么先赋值给min 然后在和min进行对比这样循环找到最小的那个为止
      

  8.   

    也许你只是由于没有搞懂一个概念,那就是二维数组的最高维是指第一维,而最高维数就是最左面那个括号里可以取得大小.
    m.length为第一维长度;第一维在内存中存放的实际是第二维的地址.
    m[].length为第二维长度;它存放的才是具体的值.