黑马程序员技术交流社区

标题: 实在 想不明白。请各位帮我看看分析下 [打印本页]

作者: 猫是点点    时间: 2015-9-30 16:53
标题: 实在 想不明白。请各位帮我看看分析下
这是我手敲的代码。问题是这样的,我编译没任何问题,也有结果,但是为什么最小不是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。
        }

}


作者: 洋葱头头    时间: 2015-9-30 17:22
因为你一直在和compare[0] 比较
作者: 碧血丹心    时间: 2015-9-30 18:16
随着i的自增,你并没有使每个compare[i]与最小值num相比,因此,将 if(compare[i]<compare[0])改为 if(compare[i]<num)即可~
作者: 猫是点点    时间: 2015-9-30 18:29
碧血丹心 发表于 2015-9-30 18:16
随着i的自增,你并没有使每个compare与最小值num相比,因此,将 if(compare

吃完饭看看发现错误很明显。。是不是都有在那一瞬间怎么也想不明白的时候。。。
作者: 猫是点点    时间: 2015-9-30 18:38
洋葱头头 发表于 2015-9-30 17:22
因为你一直在和compare[0] 比较

恩恩。不愧为大神{:2_32:}
作者: 15001162522    时间: 2015-9-30 19:52
猫是点点 发表于 2015-9-30 18:29
吃完饭看看发现错误很明显。。是不是都有在那一瞬间怎么也想不明白的时候。。。 ...

是的,因为大脑疲劳,大脑短路……劳逸结合才能提高学习效率,注意休息……
作者: Cloud丶    时间: 2015-9-30 19:56
多写代码就好了- -
作者: 残影    时间: 2015-10-1 00:07
  if(compare[i]<compare[0])  把compare[0]改成num
作者: 猫是点点    时间: 2015-10-1 00:35
残影 发表于 2015-10-1 00:07
if(compare

多谢大神
作者: 猫是点点    时间: 2015-10-1 00:37
15001162522 发表于 2015-9-30 19:52
是的,因为大脑疲劳,大脑短路……劳逸结合才能提高学习效率,注意休息…… ...

谢谢你,么么哒




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2