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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄兴旺 金牌黑马   /  2013-8-11 00:12  /  1136 人查看  /  6 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黄兴旺 于 2013-8-11 00:58 编辑
  1. class aaa
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[] arr ={1,4,5,8,3,2};
  6.                 System.out.println(getMax(arr));
  7.                 System.out.println(getMin(arr));
  8.         }
  9.         public static int getMax(int[] arr)
  10.         {
  11.                 int max = 0;
  12.                 for (int x=1;x<arr.length ;x++ )
  13.                 {
  14.                         if (arr[x]>arr[max])
  15.                                 arr[max] = arr[x];
  16.                 }
  17.                 return arr[max];
  18.         }
  19.         public static int getMin(int[] arr)
  20.         {
  21.                 int min = 0;
  22.                 for (int x = 1;x<arr.length ;x++ )
  23.                 {
  24.                         if(arr[x]<arr[min])
  25.                                 arr[min] = arr[x];
  26.                 }
  27.                 return arr[min];
  28.         }
  29. }
  30.   
复制代码
运行起来怎么不对??

6 个回复

正序浏览
xscn 发表于 2013-8-11 01:04
其实数组这些排序冒泡啦选择啦等等最重要的是理解思想算法,至于排序结果,后面学到Arrays工具类会有更简 ...

嗯嗯 多谢大神点拨
回复 使用道具 举报

其实数组这些排序冒泡啦选择啦等等最重要的是理解思想算法,至于排序结果,后面学到Arrays工具类会有更简便的做法,几行代码就能搞定。
  1. import static java.util.Arrays.*;
  2. import java.util.*;
  3. class Demo
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                int[] arr ={1,4,5,8,3,2};
  8.                sort(arr);
  9.                        //System.out.println(Arrays.toString(arr));
  10.                            System.out.println("Min="+arr[0]);
  11.                           
  12.                System.out.println("Max="+arr[arr.length-1]);


  13.         }
  14.       
  15. }
  16. ---------- java ----------
  17. Min=1
  18. Max=8

  19. 输出完成 (耗时 0 秒) - 正常终止
复制代码
回复 使用道具 举报
回复 使用道具 举报
longlangcx 发表于 2013-8-11 00:40
你在获取最大值最小值的时候改变了原数组。
你用原数组的0角标来存储的最值,而没有用你设置的max和min,这 ...

呵呵   懂了   谢谢 哥们
回复 使用道具 举报
你在获取最大值最小值的时候改变了原数组。
你用原数组的0角标来存储的最值,而没有用你设置的max和min,这样在获取最值时就对原数组进行了改变。
更重要的是,你的改变不是交换位置,而是直接覆盖。
你的程序再执行完getMax()方法之后,原数组中的1已经不见了。在getMax之后,你的原数组变成了{8,4,5,8,3,2}。这样在获取最小值的时候,自然得到的最小值就是2,因为1已经不在数组中了。
回复 使用道具 举报 1 0
  1. class aaa
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[] arr ={1,4,5,8,3,2};
  6.                 System.out.println(getMax(arr));
  7.                 System.out.println(getMin(arr));
  8.         }
  9.         public static int getMax(int[] arr)
  10.         {
  11.                 int max = 0;
  12.                 for (int x=1;x<arr.length ;x++ )
  13.                 {
  14.                         if (arr[x]>arr[max])
  15.                                 max = x;
  16.                 }
  17.                 return arr[max];
  18.         }
  19.         public static int getMin(int[] arr)
  20.         {
  21.                 int min = 0;
  22.                 for (int x = 1;x<arr.length ;x++ )
  23.                 {
  24.                         if(arr[x]<arr[min])
  25.                                 min =x ;
  26.                 }
  27.                 return arr[min];
  28.         }
  29. }
  30.   
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马