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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 贾旭 中级黑马   /  2012-3-20 19:23  /  2457 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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忽略了呢。求解

6 个回复

倒序浏览
其实原因在于这句   for(int arg:args)   中的   args  的值   他是一个数组    而不包含(int x,int y,int  ... args)  中的  x  y
回复 使用道具 举报
       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
回复 使用道具 举报
1.   把可变参数看成是一个长度不确定的数组。其实你也知道呀,不然不会用for循环呢
2.   加强for循环
for(int arg: args){
}int——>数组的类型,arg——>数组中的元素,相当于args[i],args——>遍历的数组
你这里用到的就是args
回复 使用道具 举报
可变参数一定要定义在参数的最后面。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.
回复 使用道具 举报
灰常感谢楼上的几位。{:soso_e113:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马