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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡小凡 中级黑马   /  2012-11-22 17:28  /  2545 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static int getMin(int[] arr)
{
    int min =0;
    for (int x =1;x<arr.length ;x++ )
    {
     if(arr[x]<arr[min])
      min=x;
    }
      return arr[min];

}   
public static void main(String[] args)
{
    int[] arr ={1,4,5,3,2,6,8};
    int max = get_Max(arr);
    int min = getMin(arr);
    System.out.println("max="+max);
    System.out.println("min="+min);
}
}

未命名.jpg (12.59 KB, 下载次数: 125)

未命名.jpg

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1 话说,min不应该等于0,而是arr[0].

查看全部评分

11 个回复

倒序浏览
public static int getMin(int[] arr)
{
    int min =0;
     for (int x =1;x<arr.length ;x++ )//你的x是从1开始的,可是数组角标是从0开始的,所以你把第一个数跳过去了
     {
      if(arr[x]<arr[min])
       min=x;
     }
       return arr[min];

}   
public static void main(String[] args)
{
     int[] arr ={1,4,5,3,2,6,8};
     int max = get_Max(arr);
     int min = getMin(arr);
     System.out.println("max="+max);
     System.out.println("min="+min);
}
}


评分

参与人数 1技术分 +1 收起 理由
崔政 + 1 赞一个!

查看全部评分

回复 使用道具 举报
  1. class GetMin
  2. {
  3.         public static int getMin(int[] arr)
  4.         {
  5.                 if(arr.length==0)
  6.                     return -1;;
  7.                 int min=0;
  8.                 for (int x =0;x<arr.length ;x++ )
  9.                 {
  10.                  if(arr[x]<arr[min])
  11.                   min=x;
  12.                 }
  13.                   return arr[min];
  14.         }   
  15.         public static void main(String[] args)
  16.         {
  17.                 int[] arr ={1,4,5,3,2,6,8};
  18.                 //int max = get_Max(arr);
  19.                 int min = getMin(arr);
  20.                 //System.out.println("max="+max);
  21.                 System.out.println("min="+min);
  22.         }
  23. }
复制代码

回复最小值问题.jpg (78.41 KB, 下载次数: 99)

回复最小值问题.jpg

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1 很给力!

查看全部评分

回复 使用道具 举报
王震阳 发表于 2012-11-22 17:43

为什么要把(getMax)最大值划掉,我刚刚也是划掉最大值就打出来1了,
回复 使用道具 举报
因为数组角标是从0开始。
在你的数组里面,数据1是第一个,所以1的角标是0。
你直接从角标1开始比较,他就从你的角标1到最大角标里面找最小数值。
后面数组里面最小值是2,所以打印2{:soso_e196:}

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1 在理!

查看全部评分

回复 使用道具 举报
胡小凡 发表于 2012-11-22 18:03
为什么要把(getMax)最大值划掉,我刚刚也是划掉最大值就打出来1了,

毕老师的视频都没划掉,结果是1.
回复 使用道具 举报
秦锐 初级黑马 2012-11-22 18:39:48
7#
getMin()方法中 的for循环中x应该从0开始,你的数组中的1根本就没有参加比较,arr[0]==1;
回复 使用道具 举报
秦锐 初级黑马 2012-11-22 18:42:35
8#
还有,这个代码中最好用数组的第一个值作为min的初值,否则当数组全为负数时就会出错。
回复 使用道具 举报
楼主 你的代码无错误,可以正确打印出最小值。
回复 使用道具 举报
楼主你代码无错

QQ截图20121123112332.jpg (92.24 KB, 下载次数: 102)

QQ截图20121123112332.jpg
回复 使用道具 举报
我也把你的程序运行了一遍,没有任何问题,可以正确的输出结果
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马