黑马程序员技术交流社区
标题:
多参数问题
[打印本页]
作者:
黑马-李勇
时间:
2012-7-25 08:31
标题:
多参数问题
import java.lang.Math.*;
public class demo
{
public static void main(String[] args)
{
System.out.println(add(2,5,4));
}
public static int add(int x,int ...args)
{
int sum=0;
for(int i=0;i<args.length;i++)
sum+=args[i];
return sum;
}
}
结果为什么是9,前面第一个参数为什么没有加进去?
作者:
肖琦
时间:
2012-7-25 08:42
方法中,你的for循环循环累加的是args的每个元素,你根本没有用第一个参数
作者:
周玉龙
时间:
2012-7-25 09:23
我开始学的时候也碰到了这个问题。
public static int add(int x,int ...args)你传进去的可变参数nt ...args这个表述int类型的数组args,并不包括int x,
那么像想实现你的加法方法就简单了,只要把初始值sum初始值的赋值为x,就是把里面的所有的数都加起来了。
作者:
柳雷
时间:
2012-7-25 09:27
由于可变参数中的可变数组args[]只是代表你为列出来的参数,这一点张老师在视频上也犯过这个错误,不过及时改了。
更改后的代码:
import java.lang.Math.*;
public class Test
{
public static void main(String[] args)
{
System.out.println(add(2,5,4));
}
public static int add(int x,int ...args)
{
int sum=x;
for(int i=0;i<args.length;i++)
sum+=args[i];
return sum;
}
}
复制代码
运行结果:
11.png
(350 Bytes, 下载次数: 81)
下载附件
2012-7-25 09:27 上传
作者:
乐峰
时间:
2012-7-25 09:38
import java.lang.Math.*;
public class demo
{
public static void main(String[] args)
{
System.out.println(add(2,5,4));
}
public static int add(int x,
int ...args
)//
可变参数一定要定义在参数列表的最后面,你循环的是后面的数组参数args,而不是前面的变量x,所以你的结果是9
{
int sum=0;
for(int i=0;i<args.length;i++)
sum+=args
;
return sum;
}
}
作者:
郑正华
时间:
2012-7-25 09:46
本帖最后由 郑正华 于 2012-7-25 09:50 编辑
对,add(2,5,4)中的2没有加进去,运行结果是9!
楼主的代码中 int x=2,args[]数组的长度是2,里面有5 ,4两个元素,即:args[]={5,4}, args[0]=5, args[1]=4
当i = 0时,sum = sum + args[0],即sum = 0+5,
当i = 1时,sum = sum + args[1] , 即sum = 5+4
作者:
李菁
时间:
2012-7-25 09:52
public static int add(int x,int ...args)
int...args为动态参数,而x是一个单独的形参
{
int sum=0;
for(int i=0;i<args.length;i++)
在这里循环args的每个元素
sum+=args
;
sum累加的只是args中的元素,而不包括形参x
return sum;
}
public static void main(String[] args)
{
System.out.println(add(2,5,4));
所以调用add方法时,是计算从第二位开始的,因为add方法只累加args中元素的值
}
作者:
吴立杰
时间:
2012-7-25 09:53
哇,好多人回答啊,这个问题其实很简单,你的可变参数是从第二个int类型的数据开始的,当然不会加上第一个咯,以后要自己仔细分析,这样的小问题是最锻炼自己的,自己解决的多了,以后这样的小问题会出现的越来越少的。加油!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2