黑马程序员技术交流社区

标题: 多参数求和的小问题 [打印本页]

作者: 透过生活    时间: 2014-2-16 18:43
标题: 多参数求和的小问题
本帖最后由 透过生活 于 2014-2-18 09:45 编辑

class VariableParameter
{
public static void main(String[] args)
{
  System.out.println(add(1,2,3));
}
public static int add(int x,int ...args)
{
  int sum =x;//为什么这里要等于X,不是应该0吗?求讲解循环过程。
  for(int i =0;i<args.length;i++)
  {
   sum+=args;
  }
  return sum;
}
}

为什么sum要等于X,不是应该0吗?求讲解循环过程。


作者: Amorvos    时间: 2014-2-16 23:05
大哥,这个方法是要实现多参求和,也就是说从第一个累加到最后一个,所以说,Sum=0还是第一个参数值,对结果不产生影响
作者: 透过生活    时间: 2014-2-17 09:49
Amorvos 发表于 2014-2-16 23:05
大哥,这个方法是要实现多参求和,也就是说从第一个累加到最后一个,所以说,Sum=0还是第一个参数值,对结 ...

sum=与sum=x 结果不一样。。
作者: Amorvos    时间: 2014-2-17 10:22
透过生活 发表于 2014-2-17 09:49
sum=与sum=x 结果不一样。。

Sorry,没仔细看哈。你这个是可变形参的方法,你在add方法中你可以先输出一下args.length,你就会发现这个可变形参长度比真实长度小一,也就是说add( int x , int ... args )中第一个参数是指传入参数列表的第一个元素,args是剩余的其他元素。当你Sum=0时,1计算根本不会被加入,只会加入2和3,因此此时结果是5,
作者: 李金中    时间: 2014-2-17 21:18
额,这个是 表示除了可变参数以外,你前面还可以有一般参数。我之前看这块就迷糊了。。。
你如果不想要一般参数,只有可变参数可以这么写
public static int add(int ... args)
{
   int sum = 0;
   for(int i = 0; i < args.length; i++)
   {
      sum += args[i]
    }
    return sum;
}

明白了么。。你的代码中 实际上 args.length = 2。虽然传进去3个,但是第一个不算是可变参数得。。。
==============================================================
除了分,木钱别无他求 !!!!!




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