黑马程序员技术交流社区

标题: 高新技术中的可变参数,闹不懂了 [打印本页]

作者: 贾旭    时间: 2012-3-20 19:23
标题: 高新技术中的可变参数,闹不懂了
1.        public static int add(int  ... args){
                int sum=0;
                for(int arg:args){
                        sum+=arg;
                }
                return sum;
        }
             System.out.println(add(200,400,800));
           结果:1400


2.         public static int add(int x,int  ... args){
                int sum=0;
                for(int arg:args){
                        sum+=arg;
                }
                return sum;
        }
             System.out.println(add(200,400,800));
           结果:1200.


3.    public static int add(int x,int y,int  ... args){
                int sum=0;
                for(int arg:args){
                        sum+=arg;
                }
                return sum;
        }
             System.out.println(add(200,400,800));
           结果:800.

我是真闹不懂了,怎么
add(int x,int   ... args)就把200忽略了呢。求解

作者: 谢明    时间: 2012-3-20 19:42
其实原因在于这句   for(int arg:args)   中的   args  的值   他是一个数组    而不包含(int x,int y,int  ... args)  中的  x  y
作者: 魏群    时间: 2012-3-20 20:01
       public static int add(int x,int  ... args){
                int sum=0;
                for(int arg:args){
                        sum+=arg;
                }
                return sum;
        }
             System.out.println(add(200,400,800));
           结果:1200.
因为你的方法里只是执行了形参args参数的累加并没有在加上形参x
add(200,400,800));时200是匹配的形参x 400,800是匹配的形参 args
作者: 李飞    时间: 2012-3-20 20:11
1.   把可变参数看成是一个长度不确定的数组。其实你也知道呀,不然不会用for循环呢
2.   加强for循环
for(int arg: args){
}int——>数组的类型,arg——>数组中的元素,相当于args[i],args——>遍历的数组
你这里用到的就是args
作者: 贠(yun)靖    时间: 2012-3-21 00:13
可变参数一定要定义在参数的最后面。1.        public static int add(int  ... args){
                int sum=0;
                for(int arg:args){
                        sum+=arg;
                }
                return sum;
        }
             System.out.println(add(200,400,800));
           结果:1400

                        这里因为定义了一个int变量  所以传参的时候前两个是int型的参数,最后两个才是数组的可变参数
2.         public static int add(int x,int  ... args){
                int sum=0;
                for(int arg:args){
                        sum+=arg;
                }
                return sum;
        }
             System.out.println(add(200,400,800));
           结果:1200.


                        这里因为定义了一个int变量  所以传参的时候前两个是int型的参数,最后两个才是数组的可变参数
3.    public static int add(int x,int y,int  ... args){
                int sum=0;
                for(int arg:args){
                        sum+=arg;
                }
                return sum;
        }
             System.out.println(add(200,400,800));
           结果:800.

作者: 贾旭    时间: 2012-3-21 10:27
灰常感谢楼上的几位。{:soso_e113:}




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