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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 乔九 中级黑马   /  2013-2-21 17:21  /  1645 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package cn.itcast.day1;

public class VarableParameter {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                add(2,4,5);

        }
        public static void add(int a,int ... args)
        {
                        int sum=0;
                for(int i=0;i<args.length;i++)
                {
                       
                        sum=sum+args[i];
                       
                }
                System.out.println(sum);
        }

}打印结果怎么是9啊?

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9

查看全部评分

5 个回复

倒序浏览
只是把后连个数赋给了可变参数args,2赋给了a,sum只是加了可变参数里面的数,没有加a
回复 使用道具 举报
  1. public static void add(int a,int ... args)
  2.         {
  3. //这里应该是a
  4.                  int sum=a;
  5.                 for(int i=0;i<args.length;i++)
  6.                 {
  7.                         
  8.                         sum=sum+args[i];
  9.                         
  10.                 }
  11.                 System.out.println(sum);
  12.         }
复制代码
回复 使用道具 举报
public static void add(int a,int ... args)
该方法中,第一个为形参为整数,第二个形参为int型的数组,而方法的主体是求数组里面各个元素的和,而int整数没有用到,所以结果就是数组中元素相加即4+5=9;
回复 使用道具 举报
本帖最后由 江华 于 2013-2-21 17:40 编辑

从结果分析问题:
1、立场:
    计算机加减乘除肯定不会计算错误
    结果是9说明,它相加的值就是9.
2、根据结果分析
     传入参数:    2,4,5
    预期结果:11
    实际结果:9
   从而可以发现,计算机可以能只相加了:4,5,没有加第一个参数。
3、根据发现的现象,来分析代码
  1. public static void add( int a,int ... args)
  2.         {
  3.                 int sum=0;
  4.                 for(int i=0;i<args.length;i++)
  5.                 {
  6.                         sum=sum+args[i];
  7.                 }
  8.                 System.out.println(sum);
  9.         }
复制代码
发现类add 接收参数列表是,int 类型变量  a和int 类型不定长度数组变量args
所以,我们在出入参数的时候,第一个参数赋值给了a,第二个参数才赋值给了数组的0脚标。
--------
问题出现在这个代码
  1.      public static void add(int a,int ... args)  
复制代码
你应该修改为
  1.     public static void add(int ... args)  
复制代码
或者 是
  1. public static void add( int a,int ... args)
  2.         {
  3.                 int sum=a;
  4.                 for(int i=0;i<args.length;i++)
  5.                 {
  6.                         sum=sum+args[i];
  7.                 }
  8.                 System.out.println(sum);
  9.         }
复制代码
就可以了

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

回复 使用道具 举报
原来是我的沙发,只是修改一下排版,结果沙发被抢了。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马