黑马程序员技术交流社区

标题: 可变参数 ——代码运行报错 [打印本页]

作者: 王延龙    时间: 2013-7-5 15:32
标题: 可变参数 ——代码运行报错
package cn.practice;

public class VarableParameter {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                System.out.println(add(2,3));
                System.out.println(add(2,3,5));
        }
       
        public static int add(int x, int ... args){
               
                int sum = 0;
                for(int i = 0; i <= args.length; i++){
                       
                        sum += args[i];
                }
                return sum;
        }

}


//报错
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
        at cn.practice.VarableParameter.add(VarableParameter.java:19)
        at cn.practice.VarableParameter.main(VarableParameter.java:10)


//自己第一次用Eclipse 对于调试和报错提示不太懂


作者: 王靖远    时间: 2013-7-5 16:25
改成以下就可以了。错误一:sum初始值应该是x不然你的x就加不进去了。错误二: i <= args.length循环条件应该是i<args.length 可变参数长度是2 角标只能取到1,
int sum = x;
                for(int i = 0; i < args.length; i++)
                {
                        
                        sum += args[i];
        }
        return sum;
作者: 704050a    时间: 2013-7-5 17:44
你的这个异常叫做数组角标越界异常,应该改为for(int i = 0; i < args.length; i++)。你也可以在网上找一些关于eclipse初学者的经验的博客看一看,这样的话对你的学习有很大的帮助。。
作者: 王延龙    时间: 2013-7-5 23:57
王靖远 发表于 2013-7-5 16:25
改成以下就可以了。错误一:sum初始值应该是x不然你的x就加不进去了。错误二: i  ...

谢了,数组越界,多谢指正
作者: 王延龙    时间: 2013-7-5 23:58
704050a 发表于 2013-7-5 17:44
你的这个异常叫做数组角标越界异常,应该改为for(int i = 0; i < args.length; i++)。你也可以在网上找一些 ...

谢了,错误原因找到了
作者: 黑马龙子    时间: 2013-7-8 18:40
是数组下表越界,把 for(int i = 0; i < =args.length; i++)该为: for(int i = 0; i < args.length; i++)即可。
作者: 王延龙    时间: 2013-7-19 03:07
哦,谢了,发现自己老是不仔细




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