黑马程序员技术交流社区

标题: 关于可变参数的累加问题 [打印本页]

作者: 明月几时有    时间: 2013-11-24 11:56
标题: 关于可变参数的累加问题
class VaviableParameter{
        public static void main(String[] args) {
                System.out.println(add(1,2));
                System.out.println(add(1,2,3,4));
        public static int add(int x,int...args){
                int sum=x;                //这里为什么不是 sum=0?
                for (int i=0;i<args.length;i++)
                {
                        sum+=args[i];//不然这里第一个sum=x+x,岂不是加重了,但是结果又是正确的
                }
        }
        }
}
作者: 肖川    时间: 2013-11-24 12:44
args[0]是后面数组中的第一个元素,当然不包括x啊。所以sum+=args[i]第一次执行是sum=x+args[0]不是sum=x+x;所以结果当然是对的啊。当参数只有一个的时候,sum=x;所以不能令sum=0;
作者: 王雷1    时间: 2013-11-24 15:16
首先你的num=x,而x是外面传进来的值,所以不可能跟传进来的值不一样,你传的不是0,所以它肯定不是0,第二,你的args[i]是后一个也就是第二个参数,如果你上面这么传,args[0]应该是2,args[1]是3,args[2]4,是这样的你明白了么
作者: 潘际昌    时间: 2013-11-24 16:15
  1. public static int add(int x,int...args){
  2.                 int sum=x;                //这里为什么不是 sum=0?
  3.                 for (int i=0;i<args.length;i++)
  4.                 {
  5.                         sum+=args[i];//不然这里第一个sum=x+x,岂不是加重了,但是结果又是正确的
  6.                 }
  7.         }
复制代码
首先你的add方法传入的是一个int类型x和一个int类型数组args,x和数组args没一点关系,所以args跟x根本是两个概念,x是不属于数组里面的。




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