黑马程序员技术交流社区

标题: 可变参数和高级FOR的问题 [打印本页]

作者: 黑马-王言龙    时间: 2012-6-30 07:45
标题: 可变参数和高级FOR的问题
本帖最后由 wyl530274554 于 2012-6-30 09:33 编辑

public class VariableParameter {
        public static void main(String[] args) {
                //add(2,6,4);
                add(3,5,7,8);
        }
        
        public static void add(int x, int... args) {               
                int sum = x;
                //for(int i=0; i<args.length; i++) {            //这样可以
                for(int j : args) {    //用高级for就出错,提示在下面    //原来这里的 j 就代表那数组里的每一个元素,而不是数组元素的下标值
                        sum += args[j];
                }
                System.out.println("Sum = " + sum);
        }
}

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5    //想不通!
        at cn.itcast.melon.VariableParameter.add(VariableParameter.java:13)
        at cn.itcast.melon.VariableParameter.main(VariableParameter.java:6)

请问原因何在?
作者: 赵志勇    时间: 2012-6-30 08:04
语法:
    for ( type 变量名:集合变量名 )  { … }

   集合变量可以是数组或实现了Iterable接口的集合类
public class VariableParameter {
         public static void main(String[] args) {
                 //add(2,6,4);
                 add(3,5,7,8);
         }
         
         public static void add(int x, int... args) {               
                int sum = x;
                 //for(int i=0; i<args.length; i++) {            //这样可以
                 for(int j : args) {    //用高级for就出错,提示在下面
                         sum += args[j];//这里应该改成sum+=j;
                 }
                 System.out.println("Sum = " + sum);
         }
}






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