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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李明贵 中级黑马   /  2012-10-19 15:44  /  1305 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看视频自学到数组,做下练习出错了,求指导

int[] number ={ 13, 25, 123, 46, 684, 20, 13, 254, 16 };
            int max=0,min=0,sum=0,ave=0,i=0;
            for (i = 0; i <=number.Length; i++)
            {
                if (max < number[i])
                {
                    max = number[i];
                }
                if (min > number[i])
                {
                    min = number[i];
                }
                sum = sum + number[i];
            }
            ave = sum / number.Length;
            Console.WriteLine("这个数组的最大值是{0},最小值是{1},和是{2},平均值是{3}",max,min,sum,ave);
            Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

4 个回复

倒序浏览
for (i = 0; i <=number.Length; i++)
这里的小于等于错了吧。会越界的。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
把for循环里面的 i <= number.Length 改成 i < number.Length
原因是计数器i是从0开始的,和数组的下标相对应,而number.Length则是从1开始的,当然就会报错了.
在该例中,数组有9个元素,但下标为0-8,共9个,而for从0开始循环,加等号就等于要循环10次,但找不到数组中第10个数组的元素,所以报错.

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
哦,谢谢啦
回复 使用道具 举报
这还有一个错误:min一开始不能赋值为0,否则最小值成0了,应该改成 min=number[0]

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

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