黑马程序员技术交流社区

标题: 一个可变参数的问题,谁帮忙看一下? [打印本页]

作者: 高双武    时间: 2011-11-7 20:46
标题: 一个可变参数的问题,谁帮忙看一下?
package students;
public class VariableParaments {       
        public static int addSum(int x,int  ... args){
                int sum=0;
                for(int i=0;i<args.length;i++){
                        sum=sum+args[i];
                }
                return sum;
        }
        public static void main(String [] args){
                System.out.println(addSum(1,2,3,4,5));
        }

其中args.length是指数组长度,为什么在调试时显示长度值是4,不是有五个数吗?
  
作者: 郭敏    时间: 2011-11-7 20:58
因为你在addSum 方法中传入了两个参数,其中一个为可变参数,
作者: 刘福双    时间: 2011-11-7 20:59
本帖最后由 刘福双 于 2011-11-7 21:22 编辑

数组的下标是从0 开始的
0、1、2、3、4
五个数
例子证明下:
public class as {
       
        public static void main(String[] args){
                System.out.println(addSum(1,2,3,4,5));
        }      
            public static  int addSum(int  ... args){
                    int sum=0;
                    for(int i=0;i<args.length;i++){
                            sum=sum+args;
                    }
                    return sum;
            }

}


如果定义int x,int  ... args就会忽略一个数
作者: 高双武    时间: 2011-11-7 21:39
谢谢你们的回答,刚才测试了一下,好像是这样,x并不属于args[]数组里面的数,数组里只存了2,3,4,5那个1直接存在变量x里了
作者: 史晓霞    时间: 2011-11-7 22:56
出入的是5个参数,但是第一关参数传给了第一关参数x,后面的4个才真正传给了args,所以是4个,我感觉这就是我们定义的可变参数都是放在最后面,不然就会出现错误,不然我们都不知道怎么传给参数值了,系统也不会识别的




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