7.4 多参数和无参数
函数可以有一个以上的参数,例如f(x,y)=3x+4y。这个在Java里面怎么表达呢?如下所示:
public static int func2(int x,int y){
int z=3*x+4*y;
return z;
}
/*
调用func2
*/
public static void main(String[]args){
int r=6;
int m=7;
int y=func2(r,m);
System.out.println(y);
}
上面的代码展示了两个参数的写法。超过两个参数类同。
每一个参数都需要有类型说明,然后用逗号隔开。
调用的时候,按照定义的参数顺序来传递。例如在这样调用func2(5,6),那么5就赋给了x,6就赋给了y,计算z的值最后返回。
函数还可以没有参数,这类函数的计算结果不需要任何参数输入,例如:
public static double pi(){
return 3.1415926;
}
这个函数返回pi的值,它不需要输入。这类函数的调用和有参数的函数调用是一样的:
public static void main(String[]args){
int r=6;
double s=pi()*r*r;
System.out.println("圆的面积是"+s);
}
练习题
-
选择题1.下列说法错误的是: (2分) [选择]A.
B. 不需要参数就能调用的函数,就是无参数的函数
C. 函数没有值计算出来,就是void类型的函数
D. 参数个数和返回值没有任何关系
E. main就是无参数,void返回值的函数 -
定义下列函数1.(*)定义一个函数min,参数是两个整型,返回较小的那个数字。 (10分) [编程]main函数部分是调用该函数,可视为测试
public static void main(String[]args){ System.out.println(min(1,5)); System.out.println(min(15,10));}2.(*)定义一个函数minusAbs,以两个整数为参数,返回值是两个数字差的绝对值。 (10分) [编程]main函数部分是调用该函数,可视为测试public static void main(String[]args){ System.out.println(minusAbs(1,5)); System.out.println(minusAbs(15,10));}3.(***)定义一个函数maxDivisor,以两个整数为参数,返回它们的最大公约数。 (10分) [编程]main函数部分是调用该函数,可视为测试public static void main(String[]args){ System.out.println(maxDivisor(24,36)); System.out.println(maxDivisor(36,24)); System.out.println(maxDivisor(24,48)); System.out.println(maxDivisor(72,36)); System.out.println(maxDivisor(11,13));}4.(***)定义一个函数minMultiple,以两个整数为参数,返回它们的最小公倍数。 (10分) [编程]main函数部分是调用该函数,可视为测试public static void main(String[]args){ System.out.println(minMultiple(32,24)); System.out.println(minMultiple(5,3)); System.out.println(minMultiple(24,48)); System.out.println(minMultiple(72,36)); System.out.println(minMultiple(11,13));}5.(****)定义一个函数addArray,求两个数组的和。 (10分) [编程]函数名是addArray,以两个整型数组为参数
把两个数组相同下标的元素相加,结果放到第三个数组上,最后返回该数组。
提示:两个数组长度可能不一致,所以结果的数组长度是两个数组长度较大的那个。
例如两个数组:
int t1[]={13,24,35,46,27,38,19,20};
int t2[]={4,-9,56,73,66};
最终计算的数组就是{17,15, 91,119,93,38,19,20}
算法:
首先计算两个数组的长度,得到较长的长度length。
新建一个结果数组,长度是length
然后把第一个数组的值复制到这个结果数组,如果长度不一样,后面元素没有被覆盖,默认是0
然后把这个结果数组和另一个数组的元素相加,赋回给结果数组的对应元素。这两个数组哪个先复制到结果数组,都一样。。
最终返回结果数组。
main函数部分是调用该函数,可视为测试public static void main(String[]args){ int t1[]={13,24,35,46,27,38,19,20,34};int t2[]={4,-9,56,73,66};int t3[]=addArray(t1,t2);for(int i=0;i < t3.length;i++)System.out.println(t3[i]);}6.(****)(需完成前面两题)定义一个函数compose (10分) [编程]三个参数,前两个参数是整型,第三个参数是布尔类型,如果第三个参数是true,那么返回前面两个数字的最大公约数;否则返回最小公倍数。
main函数部分是调用该函数,可视为测试public static void main(String[]args){ System.out.println(compose(24,36,true)); System.out.println(compose(36,24,false)); System.out.println(compose(24,48,true)); System.out.println(compose(72,36,false)); System.out.println(compose(11,13,false));}7.(*)定义一个函数testEven,无返回值,一个整型参数x,判断x是偶数还是奇数,例如x是8,则打印“8是偶数”;例如x是13,则打印“13是奇数”。 (10分) [编程]
main函数部分是调用该函数,可视为测试public static void main(String[]args){ testEven(9); testEven(8);}8.(**)定义一个函数score,无返回值,一个整型参数。 (10分) [编程]参数作为分数,按照“优”(大于等于90分),“良”(大于等于80分小于90分),“中”(大于等于70分小于80分),“及格”(大于等于60小于70),“不及格”(60分以下),“差”(小于30分)输出等级。
main函数部分是调用该函数,可视为测试public static void main(String[]args){ score(90); score(80); score(70); score(60); score(30); score(29);}9.(***)定义一个函数testChar,无返回值,一个字符型参数。 (10分) [编程]如果字符是字母,打印“字母”;如果字符是数字,打印“数字”;如果两者都不是,打印“非字母非数字”。
main函数部分是调用该函数,可视为测试public static void main(String[]args){ testChar('A'); testChar('9'); testChar('!');}10.(***)定义一个函数function,无返回值,以两个整数为参数,(按顺序)打印它们的最大公约数和最小公倍数。 (10分) [编程]main函数部分是调用该函数,可视为测试public static void main(String[]args){ function(24,36);}11.(***)定义一个函数triangle,给定三个参数,判断这三个数能否构成一个三角形。 (10分) [编程]三角形的条件是:两边之和大于第三边。无返回值,打印判断结果,可以组成打印true,否则打印false。
提示:任意两边之和大于第三边
main函数部分是调用该函数,可视为测试public static void main(String[]args){ triangle(9,5,15); triangle(9,15,5); triangle(5,9,15); triangle(3,6,7); triangle(6,7,3); triangle(6,3,7);}12.定义一个函数printCollege,没有返回值,没有参数,打印“惠州经济职业技术学院” (10分) [编程]main函数部分是调用该函数,可视为测试public static void main(String[] args){printCollege();}