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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 明月几时有 中级黑马   /  2013-11-24 11:56  /  1289 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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,岂不是加重了,但是结果又是正确的
                }
        }
        }
}

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 25分不是结束,而是一个开始!.

查看全部评分

3 个回复

倒序浏览
args[0]是后面数组中的第一个元素,当然不包括x啊。所以sum+=args[i]第一次执行是sum=x+args[0]不是sum=x+x;所以结果当然是对的啊。当参数只有一个的时候,sum=x;所以不能令sum=0;
回复 使用道具 举报
首先你的num=x,而x是外面传进来的值,所以不可能跟传进来的值不一样,你传的不是0,所以它肯定不是0,第二,你的args[i]是后一个也就是第二个参数,如果你上面这么传,args[0]应该是2,args[1]是3,args[2]4,是这样的你明白了么
回复 使用道具 举报
  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是不属于数组里面的。

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 亲~您今日已经达到加分上限了!.

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马