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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

胡高坡

黑马帝

  • 黑马币:0

  • 帖子:7

  • 精华:0

© 胡高坡 黑马帝   /  2012-12-21 14:58  /  1323 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 胡高坡 于 2013-1-4 13:59 编辑

package cn.itcast.day1;
public class VariableParameter {
  public static void main(String[] args) {
System.out.println(add(2,3));
System.out.println(add(2,3,5));
}
public static int add(int x,int...args){
int sum=x;
for (int i= 0; i < args.length; i++) {
  sum=sum+args;
}
return sum;
}
}
其中把把sum初始化为0;结果为什么不同?

评分

参与人数 2技术分 +1 黑马币 +8 收起 理由
郭俊 + 8 赞一个!
邵天强 + 1 鼓励一下

查看全部评分

4 个回复

倒序浏览
刚问同学知道了,args[]数组在这里面是不包含方法中的第一个参数的。
回复 使用道具 举报
sum=x这是接收第一个实参,然后进行累加。如果sum=0,那么传入的第一个实参就会丢失。
回复 使用道具 举报
public static int add(int x,int...args){
int sum=x;
for (int i= 0; i < args.length; i++) {
  sum=sum+args[i];
}
return sum;
}
你一开始初始化sum=x;如果初始化为sum=0;那么你就少加了x,sum肯定会变
回复 使用道具 举报
arg[]是把出第一个参数以外的包装成一个数组,sum=0的话,x就没有进入运算,之前还没想过这个问题,支持
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马