相关知识
为了完成本关任务你需要掌握:1. 什么是方法; 2. 怎么定义和使用方法。
我们现阶段编写的代码都是放在main
函数中,不过如果我们要做一个大型的项目,把所有的代码都放入main
方法中有什么缺陷呢?
- 代码庞大;
- 难以阅读;
- 难以维护;
- 代码难以重用;
- 不利于合作开发。
怎么解决呢? 将庞大的程序划分为不同的功能小块,逐个突破,就像手机和电脑一样,把一整个电脑拆分成一个个的小功能块,例如内存,CPU
等。然后在主板中将这些功能模块组合。 这里主板就相当于main
方法,CPU
,内存这些模块,就相当于我们自己定义的方法,接下来我们就来认识一下Java
中的方法吧!
什么是方法?
方法也叫函数,就是用来解决一类问题的代码的有序组合,是一个功能模块。
怎么定义和使用方法
一般情况下,定义一个方法的语法是:
调用方法:
输出:
welcome to educoder
第一关:
编程要求
根据提示,在右侧编辑器Begin-End
处补充代码,定义一个方法名为hello
的方法用来和老师打招呼; 调用此方法输出如下结果:
hello teacher!
代码块:
public class HelloWorld {
/********** Begin **********/
public static void helloTeacher(){
//定义一个方法,用来和老师打招呼
System.out.println("hello teacher!");
}
/********** End **********/
public static void main(String[] args) {
/********** Begin **********/
//调用方法
helloTeacher();
/********** End **********/
}
}
第二关:
相关知识
如果方法不包含参数,但有返回值,我们称为无参带返回值的方法。
例如:下面的代码,定义了一个方法名为 numberPlus
,无参数,但返回值为 int
类型的方法,执行的操作为计算两数之和,并返回结果。
在 numberPlus()
方法中,返回值类型为 int
类型,因此在方法体中必须使用 return
返回一个整数值。
调用带返回值的方法时需要注意,由于方法执行后会返回一个结果,因此在调用带返回值方法时一般都会接收其返回值并进行处理。如:
一定不可忽视的问题
1
、 如果方法的返回类型为 void
,则方法中不能使用 return
返回值!
2
、 方法的返回值最多只能有一个,不能返回多个值。
3
、 方法返回值的类型必须兼容,例如,如果返回值类型为 int
,则不能返回 String
型值。
编程要求
请根据任务描述 ,在编辑器Begin-End
中定义一个名为 calcAvg
的方法,用来计算两门课程成绩的平均值,并返回结果。
测试说明
程序会对你编写的代码进行测试:
需要你的程序输出:
平均成绩为:87.75
代码块:
public class HelloWorld {
public static void main(String[] args) {
/********** Begin **********/
// 调用calcAvg()方法,并将返回值保存在变量avg中
double avg = calcAvg();
/********** End **********/
System.out.println("平均成绩为:" + avg);
}
// 定义一个返回值为double类型的方法
/********** Begin **********/
public static double calcAvg() {
double java = 92.5;
double php = 83.0;
double avg = (java + php) / 2; // 计算平均值
// 使用return返回值
return avg;
/********** End **********/
}
}
第三关:
掌握有参数无返回值方法的调用
相关知识
有时方法的执行需要依赖于某些条件,就像生活中我们做一件事情时,也许需要前提条件,而方法的参数就相当于前提条件。
我们先来看一个带参数,但没有返回值的方法:
2
、 调用方法时,实参不需要指定数据类型。
3
、 方法的参数可以是基本数据类型,如 int
、double
等,也可以是引用数据类型,如 String
、数组
等。
4
、 当方法参数有多个时,多个参数间以逗号分隔。
编程要求
根据提示,在右侧编辑器Begin-End
处补充代码,编写并调用求平均值的方法,传入两门成绩,求出平均值。
测试说明
测试输入:90
,80
预期输出: 平均分:85
测试输入:100
,90
预期输出: 平均分:95
代码块:
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int score1 = sc.nextInt(); //第一门成绩
int score2 = sc.nextInt(); //第二门成绩
/********** Begin **********/
// 调用方法,传入两门课程的成绩
calcAvg(score1,score2);
/********** End **********/
}
/*
* 功能:计算两门课程考试成绩的平均分并输出平均分
* 定义一个包含两个参数的方法,用来传入两门课程的成绩
*/
/********** Begin **********/
public static void calcAvg(int number1,int number2){
int sum=number1+number2;
int Avg=sum/2;
System.out.println("平均分:"+Avg);
}
/********** End **********/
}
第4关:
掌握有参数有返回值方法的调用
怎么定义有参数有返回值的方法
如果方法既包含参数,又带有返回值,我们称为带参带返回值的方法。
例如:下面的代码,定义了一个 welcome
方法,带有一个参数 name
,方法执行后返回一个 String
类型的结果。
怎么调用
调用带参带返回值的方法:
运行结果为: 欢迎你张三丰
编程要求
在Begin-End
区域创建一个 名为getMax
的方法,以两个整数作为参数, 返回两个整数变量较大的值,最后在main
方法中调用该方法,传入输入的数据。
测试说明
测试输入:5
,4
预期输出: 5和4比较,最大值是:5
测试输入:2
,3
预期输出: 2和3比较,最大值是:3
代码块:
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt(); //获取第一个输入的整数
int j = sc.nextInt(); //获取第二个输入的整数
/********** Begin **********/
//在这里调用方法获取返回值
getMax(i,j);
System.out.println( i+"和"+j+"比较,最大值是:" +getMax(i,j));
/********** End **********/
}
/*在这里创建getMax方法,以两个整数作为参数,返回两个整数中较大的值*/
public static int getMax(int number1,int number2){
/********** Begin **********/
int max;
if(number1>number2){
max=number1;
}else{
max=number2;
}
return max;
}
/********** End **********/
}
第五关:
掌握数组作为参数的使用
任务描述
本关任务:将考试成绩排序并输出,返回成绩的个数。
相关知识
- 数组作为参数的样例:
实现思路
- 定义一个带有数组参数的方法;
- 在方法内部参考第八章数组排序将数组排序,并且打印;
- 返回数组的长度信息。
提示
快速输出数组的方法: System.out.println(Arrays.toString(要输出的数组));
编程要求
根据提示,在右侧编辑器Begin-End
处补充代码,程序给出了部分代码,您需要参照实现思路达到 任务描述的需求。
测试说明
程序会对你编写的代码进行测试:
需要你的程序输出下图所示:
代码块:
import java.util.Arrays;
public class HelloWorld {
public static void main(String[] args) {
int[] scores={79,52,98,81};
/********** Begin **********/
//调用方法,传入成绩数组,并获取成绩的个数
int count=sort(scores);
/********** End **********/
System.out.println("共有"+count+"个成绩信息!");
}
/*
* 功能:将考试成绩排序并输出,返回成绩的个数
*
*/
/********** Begin **********/
public static int sort(int scores[]){
// 数组从小到大排序处理(选择排序)
for (int i = 0; i < scores.length - 1; i++) {
int min = i;
for (int j = i + 1; j < scores.length; j++) {
if (scores[min] > scores[j]) {
int temp = scores[min];
scores[min] = scores[j];
scores[j] = temp;
}
}
}
// 打印出数组
System.out.println(Arrays.toString(scores));
//返回数组中元素的个数
int number=0;
for(int k=0;k<scores.length;k++){
number++;
}
return number;
}
/********** End **********/
}
第6关:
方法的重载
判断方法重载的依据:
1
、 必须是在同一个类中;
2
、 方法名相同;
3
、 方法参数的个数、顺序或类型不同;
4
、 与方法的修饰符或返回值没有关系。
敲黑板
方法重载:在同一个类中,方法名相同,参数类型不同。
编程要求
在编辑器Begin-End
处对print
方法进行重载,并通过传入不同的参数调用匹配的重载方法。
请在相应行中将代码填写完整。
测试说明
预期输出:
代码块:
public class HelloWorld {
public static void main(String[] args) {
/********** Begin **********/
// 调用无参的方法
print();
// 调用带有一个字符串参数的方法
print("educoder");
// 调用带有一个整型参数的方法
print(666);
/********** End **********/
}
/********** Begin **********/
// 无参print方法的定义
public static void print(){
System.out.println("无参的print方法");
}
// 字符串print方法的定义
public static void print(String str){
System.out.println("带有一个字符串参数的print方法,参数值为:"+str);
}
// 整型print方法的定义
public static void print(int number){
System.out.println("带有一个整型参数的print方法,参数值为:"+number);
}
/********** End **********/
}
第七关:
第8关:
方法通关挑战
任务描述
本关任务:
-
定义一个方法,接收两个
int
类型的参数a
和b
,求两个数的和,方法名为:getSum
; -
定义一个方法,接收三个
double
类型参数a
,b
,c
, 返回这三个数的平均值 返回值类型为double
,方法名为:getAvg
; -
定义一个方法,接收两个整数
a
和b
打印a
行b
列的一个矩形,方法名为:printRect
; -
定以一个方法,接收整形数组为参数,对这个数组进行升序排序,最后输出该数组,方法名为:
sortArr
; -
定义一个方法,完成
99
乘法表的打印,方法名为 :Print99
。
相关知识
编程要求
根据任务描述,在右侧编辑器Begin-End
处补充代码,定义五个方法,并编写代码实现方法对应的功能,达到输出要求。
测试说明
我会对你编写的代码进行测试: 第一题:求和
测试输入:1
,2
预期输出: 3
第二题:求平均值
测试输入:1
,2
,3
预期输出: 2.0
第三题:输出矩形
测试输入:2
,3
预期输出: ***
***
第四题:数组升序排序
测试输入:5
,7
,12
,9
,32
预期输出: 5
7
9
12
32
第五题:打印99
乘法表
测试输入:无
预期输出: