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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 透过生活 高级黑马   /  2014-2-16 18:43  /  1251 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 透过生活 于 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吗?求讲解循环过程。

4 个回复

倒序浏览
大哥,这个方法是要实现多参求和,也就是说从第一个累加到最后一个,所以说,Sum=0还是第一个参数值,对结果不产生影响
回复 使用道具 举报
Amorvos 发表于 2014-2-16 23:05
大哥,这个方法是要实现多参求和,也就是说从第一个累加到最后一个,所以说,Sum=0还是第一个参数值,对结 ...

sum=与sum=x 结果不一样。。
回复 使用道具 举报
透过生活 发表于 2014-2-17 09:49
sum=与sum=x 结果不一样。。

Sorry,没仔细看哈。你这个是可变形参的方法,你在add方法中你可以先输出一下args.length,你就会发现这个可变形参长度比真实长度小一,也就是说add( int x , int ... args )中第一个参数是指传入参数列表的第一个元素,args是剩余的其他元素。当你Sum=0时,1计算根本不会被加入,只会加入2和3,因此此时结果是5,
回复 使用道具 举报
额,这个是 表示除了可变参数以外,你前面还可以有一般参数。我之前看这块就迷糊了。。。
你如果不想要一般参数,只有可变参数可以这么写
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个,但是第一个不算是可变参数得。。。
==============================================================
除了分,木钱别无他求 !!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马