A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 梁健生 于 2013-11-6 13:16 编辑

目的:求二维数组中最大元素值及其行列号
思路:
1,用for循环嵌套
2,遍历二维数组并输出最大值及其行列号。
*/
  1. <p>class TwoArray
  2. {
  3. public static void main(String[] args)
  4. {
  5.   int[][] arr = {{13,24,35,5,4},{1,2},{3,5,8,13,21,34,55}};
  6.   print(arr);</p><p> }</p><p> public static void print(int[][] arr)
  7. {
  8.   int []arrM=new int[arr.length];
  9.   int pos=0;
  10.   int max;</p><p>  for(int x=0;x<arr.length;x++)
  11.   {
  12.    for(int y = 0;y<arr[x].length-1;y++)
  13.    {
  14.     if(arr[x][y]>arr[x][y+1])
  15.      swap(arr[x][y],arr[x][y+1]);</p><p>    arrM[pos++]=arr[x][arr[x].length-1];
  16.     </p><p>   }
  17.   }</p><p>  for(int x=0;x<arrM.length-1;x++)
  18.   {
  19.    if(arrM[x]>arrM[x+1])
  20.     swap(arrM[x],arrM[x+1]);</p><p>  }
  21.   max = arrM[arrM.length-1];</p><p>  System.out.println("最大值为:"+max);</p><p>
  22. }</p><p> public static void swap(int m,int n)
  23. {
  24.   m=m^n;
  25.   n=m^n;
  26.   m=m^n;
  27. }
  28. }
  29. </p><p> </p>
复制代码

运行图.jpg (38.19 KB, 下载次数: 10)

运行图.jpg

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

5 个回复

倒序浏览
15行 swap(arr[x][y],arr[x][y+1]);</p><p>    arrM[pos++]=arr[x][arr[x].length-1];//这句相当于内循环每循环一次在arrM中添加一个元素,
将该语句放到外循环内就可以了。楼主这个是对每个内部数组排序,并获取最值再比较内部数组最值大小。
只获取最值的话建议定义int max = arr[0][0];循环判断即可。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
楼主存储最大值的语句放错位置了:
  1. class TwoArray
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[][] arr = {{13,24,35,5,4},{1,2},{3,5,8,13,21,34,55}};
  6.                 print(arr);
  7.         }
  8.         public static void print(int[][] arr)
  9.         {
  10.                 int []arrM=new int[arr.length];
  11.                 int pos=0;
  12.                 int max;  
  13.                 for(int x=0;x<arr.length;x++)
  14.                 {
  15.                         for(int y = 0;y<arr[x].length-1;y++)
  16.                         {
  17.                                 if(arr[x][y]>arr[x][y+1])
  18.                                         swap(arr[x][y],arr[x][y+1]);
  19.                                 //arrM[pos++]=arr[x][arr[x].length-1];此处arrM用于存储arr[x]的最大值,因该放在内循环外,
  20.                                                                                                         //放在这相当于内循环每做一次,pos都会加一,当然会出现脚标越界了
  21.                         }
  22.                         arrM[pos++]=arr[x][arr[x].length-1];//放此处即可
  23.                 }  
  24.                 for(int x=0;x<arrM.length-1;x++)
  25.                 {
  26.                         if(arrM[x]>arrM[x+1])
  27.                         swap(arrM[x],arrM[x+1]);}
  28.                         max = arrM[arrM.length-1];
  29.                         System.out.println("最大值为:"+max);
  30.                 }
  31.         public static void swap(int m,int n)
  32.         {
  33.                 m=m^n;
  34.                 n=m^n;
  35.                 m=m^n;
  36.         }
  37. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
问题已经解决。。thankyou。。。。
回复 使用道具 举报
寻丶丶觅 发表于 2013-11-6 10:40
15行 swap(arr[x][y],arr[x][y+1]);    arrM=arr[x][arr[x].length-1];//这句相当于内循环每循环一次在arrM ...

谢谢。。。早上有点蒙了。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马