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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 风云 中级黑马   /  2013-6-8 17:56  /  1571 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 风云 于 2013-6-12 17:01 编辑

package cn.itcast.day1;
public class VarableParameter {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                System.out.println(bb(2,3));
                System.out.println(bb(2,3,5));
        }
public static int bb(int x,int... args){
        int sum = x;
        for(int i=0;i<=args.length;i++){
                sum += args;
        }
        return sum;
}
}
运行这个小程序时为什么会提示这样的错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
        at cn.itcast.day1.VarableParameter.bb(VarableParameter.java:15)
        at cn.itcast.day1.VarableParameter.main(VarableParameter.java:9)

评分

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

查看全部评分

4 个回复

倒序浏览
public static int bb(int x,int... args){
int sum = x;
for(int i=0;i<=args.length;i++){
sum += args;
}
return sum;
}
这里不应该写=号,因为i从0开始,应该到args.length-1是正常的循环范围。=的时候数组就越界了
如果你想用<=,那么i应该从1开始。

评分

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

查看全部评分

回复 使用道具 举报
回个帖又不会怀孕!
回复 使用道具 举报
public static int bb(int x,int... args){
        int sum = x;
        for(int i=0;i<=args.length;i++){
                sum += args[i];
        }
        return sum;
}这个方法中for循环超出了范围了!数组的下面是从0开始到length-1结束,所以i<args.length

评分

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

查看全部评分

回复 使用道具 举报
ArrayIndexOutOfBoundsException这是异常的一个提示,它的意思是数组越界的提示,你把异常那一天的视频好好看看,这些很容易看懂的。
解决办法:把for循环里面的 for(int i=0;i<=args.length;i++)改成 for(int i=0;i<args.length;i++)或者 for(int i=1;i<=args.length;i++)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马