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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 石头 黑马帝   /  2011-10-30 17:25  /  2547 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Demo3
{
        public static void main(String[] args)
        {
            int x[]={110,92,40,94,95,96,97,98,99,120};
            int max=x[0];
            for (int i=0;i<x.length ;i++ )
             {
                  if (max<x[i])
                   {
                max=x[i];
                   }
            }
                System.out.println("最高分:"+max);
        }
}

这其中int i=1跟int i=0的区别是什么??为什么最终的结果是一样的

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 编程学习的是思路。

查看全部评分

15 个回复

倒序浏览
如果最大数出现在第一个就不对了,你那个是角标int i=1 这个不全面
回复 使用道具 举报
你关健是要理解这段代码, 学会编程思想才是最重要的。如果int i=1;那if (max<x[i]),那就直接与第二个数比了,如果第一个数是最大的数,那你就求不出最大的数。建议你去看一下毕老师的视频!

评分

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

查看全部评分

回复 使用道具 举报
石头 黑马帝 2011-10-30 17:47:27
板凳
陆华山 发表于 2011-10-30 17:41
如果最大数出现在第一个就不对了,你那个是角标int i=1 这个不全面

int x[]={150,92,40,94,95,96,97,98,99,120};
我把最大数放在第一个,
这时int i=1,   结果最大数150, 我就搞不懂了。
回复 使用道具 举报
本帖最后由 郭龙华 于 2011-10-30 17:50 编辑

int i=1 的话,x[0]就不会参与比较了~
既然max就等于x[0], 那就不用和自己比较啦~所以结果一样~

评分

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

查看全部评分

回复 使用道具 举报
石头 黑马帝 2011-10-30 17:53:27
地板
郭龙华 发表于 2011-10-30 17:47
int i=1 的话,x[0]就不会参与比较了~
既然max就等于x[0], 那就不用和自己比较啦~所以结果一样~ ...

嘿嘿,明白了。。谢谢。。
回复 使用道具 举报
肖居上 黑马帝 2011-10-30 17:55:50
7#
int i=0;是从数组的第一位开始比较,int i=1是从数组的第二位比较,一样的原因是因为你让 int max=x[0];那么当int i=1时,虽然循环时跳过了数组的第一位但max就是数组的第一位,正好弥补了这一漏洞,但当你把int max=x[0]改为 int max=0; for (int i=0;i<x.length ;i++ )改为int i=1循环时时,如果这时x[0]=130的话,那结果就错了

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
黄晓天 黑马帝 2011-10-30 18:23:56
8#
具体的问题具体分析,int x=0是从数组的第一个元素开始比较,而int x=1则是从数组的第二个元素开始比较,但是因为你假设max=x[0],所以,int x=0和int x=1结果就相同了。但若你的max假设不是x[0]的话,而x=1;你就漏掉了比较x[0]了,但正好x[0]就是该数组中的最大值的话,那么结果就不对了!

评分

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

查看全部评分

回复 使用道具 举报
张晨 黑马帝 2011-10-30 18:52:10
9#
这个程序目的是找最大值,如果X[]数组第一个就是最大值的话 x=0和x=1的结果就不一样了,所以遍历的时候一定要全面

评分

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

查看全部评分

回复 使用道具 举报
白倩 黑马帝 2011-10-30 21:33:09
10#
int i=0是从数组的第一个元素x[0]开始比较,int i=1 的话,x[0]就不会参与比较了,x=0比x=1多比较了一次;

评分

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

查看全部评分

回复 使用道具 举报
如果是int i=1的时候if (max<x[i]),就直接与第二个数比了,如果第一个数为最大数,那你是比不出最大数的。
回复 使用道具 举报
秦冲 黑马帝 2011-10-30 22:26:30
12#
N个数比较大小,思路:首先假设第一个数为最大的,然后依次比较余下的N-1个数,如果有比我假设的这个数还大的数,那么将将最大值变为这个数,所以你从int i= 1(第二个数)开始比较也是可以的。第一个数你已经假设为最大了,可以省去比较。
回复 使用道具 举报
wsssx 2011-10-31 08:08:57
13#
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
刘永昌 黑马帝 2011-10-31 08:46:35
14#
这问题好回答,有关数组的运算里有一个很经典的说法-------遍历
从你的代码可以看到你的编程思想:先定义一个max值,然后与数组里的每一个成员比较,若有比max值大的,那么max取其值。而你用那个for循环就是用于遍历数组的,数组角标是从0开始,若i=1,而正好第一个元素最大,那么遍历时会漏掉第一个,你的结果只能是数组里的那个第二大的数了
回复 使用道具 举报
刘永昌 黑马帝 2011-10-31 08:47:55
15#
这问题好回答,有关数组的运算里有一个很经典的说法-------遍历
从你的代码可以看到你的编程思想:先定义一个max值,然后与数组里的每一个成员比较,若有比max值大的,那么max取其值。而你用那个for循环就是用于遍历数组的,数组角标是从0开始,若i=1,而正好第一个元素最大,那么遍历时会漏掉第一个,你的结果只能是数组里的那个第二大的数了
回复 使用道具 举报
刘福双 黑马帝 2011-10-31 09:44:03
16#
你定义了  int max=x[0]; 而且循环时从0开始等于自己和自己比较(无意思),从1开始比较是和下一个数组进行比较。所以0和1的结果是一样的。
建议用Arrays.sort();这是java里给的包,需要导入import java.util.Arrays;能快速实现数组最大值。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马