黑马程序员技术交流社区
标题:
关于可变参数的小程序
[打印本页]
作者:
乔九
时间:
2013-2-21 17:21
标题:
关于可变参数的小程序
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啊?
作者:
寇弘禄
时间:
2013-2-21 17:25
只是把后连个数赋给了可变参数args,2赋给了a,sum只是加了可变参数里面的数,没有加a
作者:
黑马刘杰
时间:
2013-2-21 17:27
public static void add(int a,int ... args)
{
//这里应该是a
int sum=a;
for(int i=0;i<args.length;i++)
{
sum=sum+args[i];
}
System.out.println(sum);
}
复制代码
作者:
胥文
时间:
2013-2-21 17:28
public static void add(int a,int ... args)
该方法中,第一个为形参为整数,第二个形参为int型的数组,而方法的主体是求数组里面各个元素的和,而int整数没有用到,所以结果就是数组中元素相加即4+5=9;
作者:
江华
时间:
2013-2-21 17:28
本帖最后由 江华 于 2013-2-21 17:40 编辑
从结果分析问题:
1、立场:
计算机加减乘除肯定不会计算错误
结果是9说明,它相加的值就是9.
2、根据结果分析
传入参数: 2,4,5
预期结果:11
实际结果:9
从而可以发现,计算机可以能只相加了:4,5,没有加第一个参数。
3、根据发现的现象,来分析代码
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);
}
复制代码
发现类add 接收参数列表是,int 类型变量 a和int 类型不定长度数组变量args
所以,我们在出入参数的时候,第一个参数赋值给了a,第二个参数才赋值给了数组的0脚标。
--------
问题出现在这个代码
public static void add(int a,int ... args)
复制代码
你应该修改为
public static void add(int ... args)
复制代码
或者 是
public static void add( int a,int ... args)
{
int sum=a;
for(int i=0;i<args.length;i++)
{
sum=sum+args[i];
}
System.out.println(sum);
}
复制代码
就可以了
作者:
江华
时间:
2013-2-21 17:41
原来是我的沙发,只是修改一下排版,结果沙发被抢了。。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2