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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

这是我手敲的代码。问题是这样的,我编译没任何问题,也有结果,但是为什么最小不是2呢?
而且如果我把4换做5 6.结果就是5 6.把这个位置数字变大,结果又是2,我不理解,有人帮我分析吗?
  public class Test {        public static void main(String args[]){
                int[] compare = {10,2,4,64,87,43,21,41};//定义一个名为compare的数组,长度为8
                int min=getMin(compare); // 调用getMin函数,将所返回的值赋给min
               
                System.out.println("Min="+min); //输出最小值。
               
        }
        public static int getMin(int[] compare){// 定义一个叫getMin的函数,有一个数组参与进来
                int num=compare[0];//将数组中的第一个元素赋值给num。
                for(int i=1;i<compare.length;i++){
                        if(compare[i]<compare[0])
                                num = compare[i];// 通过遍历,将最小的元素值找到并且赋值给num,
                }
                return num;//返回最小元素num。
        }

}

9 个回复

倒序浏览
因为你一直在和compare[0] 比较
回复 使用道具 举报
随着i的自增,你并没有使每个compare[i]与最小值num相比,因此,将 if(compare[i]<compare[0])改为 if(compare[i]<num)即可~
回复 使用道具 举报
碧血丹心 发表于 2015-9-30 18:16
随着i的自增,你并没有使每个compare与最小值num相比,因此,将 if(compare

吃完饭看看发现错误很明显。。是不是都有在那一瞬间怎么也想不明白的时候。。。
回复 使用道具 举报
洋葱头头 发表于 2015-9-30 17:22
因为你一直在和compare[0] 比较

恩恩。不愧为大神{:2_32:}
回复 使用道具 举报
猫是点点 发表于 2015-9-30 18:29
吃完饭看看发现错误很明显。。是不是都有在那一瞬间怎么也想不明白的时候。。。 ...

是的,因为大脑疲劳,大脑短路……劳逸结合才能提高学习效率,注意休息……
回复 使用道具 举报
多写代码就好了- -
回复 使用道具 举报
残影 高级黑马 2015-10-1 00:07:19
8#
  if(compare[i]<compare[0])  把compare[0]改成num
回复 使用道具 举报

多谢大神
回复 使用道具 举报
15001162522 发表于 2015-9-30 19:52
是的,因为大脑疲劳,大脑短路……劳逸结合才能提高学习效率,注意休息…… ...

谢谢你,么么哒
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马