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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-王言龙 中级黑马   /  2012-6-30 07:45  /  1481 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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)

请问原因何在?

1 个回复

倒序浏览
语法:
    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);
         }
}

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
黄奕豪 + 1 赞一个!
黑马-王言龙 + 2 赞一个! 3Q

查看全部评分

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