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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 13569403973 中级黑马   /  2015-6-13 21:23  /  1039 人查看  /  24 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

clsss Test {
int[] x = {125,21,5,168,98};
max = x[0];
for (int i=1; i<x.length; i++){
                if(x[i] < max)
                max = x[i];
}

  运行结果为啥是5?
System.out.println(max);
}

24 个回复

倒序浏览
if(x[i] < max改成>
回复 使用道具 举报
你的循环求的是最小值,这估计是个测试题吧,专门坑人的,仔细观察一下,不要被变量名字骗了!
回复 使用道具 举报
求的是最小值,当然是5啦
回复 使用道具 举报
你这里是取的最小值
回复 使用道具 举报
你求的是最小值
回复 使用道具 举报
变量名好坑,这个是求最小值得。如果x[i]>max,则是最大值。
回复 使用道具 举报
把arr[x]<max 改成arr[x]>max就可以了,写完程序要自己读一遍程序。
回复 使用道具 举报
因为你输出的是最小值啊
回复 使用道具 举报
由max = x[0],得max= 125,if比较两个值,如果小于max,就把值赋给max,所以5.
回复 使用道具 举报
if(x[i] < max)
                max = x[i];
这个是求最小值,我就被max这个变量名坑了。
回复 使用道具 举报 1 0
最小值      所以是5
回复 使用道具 举报
for循环遍历数组,if语句判断是否为最小值,遍历数组结束后,将最小值赋给max
回复 使用道具 举报
因为你记录的是最小的,你想想,比0小你就记录,最后肯定是5了,应该换成比0大才对
回复 使用道具 举报
首先很同意楼上的观点。
你把程序写成了输出最小的代码了
改成: if(x[i] > max)
                max = x[i];
回复 使用道具 举报
云端的风 发表于 2015-6-14 18:03
最小值      所以是5

给人讲清楚点嘛
回复 使用道具 举报
符号反了
回复 使用道具 举报
ujump 中级黑马 2015-6-14 20:48:17
18#
写的代码自己读一遍,你写的是max>x[i]时 换 说明是吧小值留下了,所以你输出的是小智……不用谢
回复 使用道具 举报
你这求的应该是最小值
回复 使用道具 举报
在循环体中, 判断语句是将把后面的值小于max值的,赋给了max,所以循环出来的是最小值, max求的是最小值,建议将max该成min,见名思义
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马