本文
前往“校招VIP”小程序,访问更方便

Java入门 - 方法的使用

csdn 12月20日

转载声明:文章来源:https://blog.csdn.net/m0_47174730/article/details/112649818

第1关:如何定义方法

任务描述

本关任务:定义一个用来和老师打招呼的方法。

相关知识

为了完成本关任务你需要掌握:1. 什么是方法; 2. 怎么定义和使用方法。

我们现阶段编写的代码都是放在main函数中,不过如果我们要做一个大型的项目,把所有的代码都放入main方法中有什么缺陷呢?

代码庞大;

难以阅读;

难以维护;、

代码难以重用;

不利于合作开发。

怎么解决呢?

将庞大的程序划分为不同的功能小块,逐个突破,就像手机和电脑一样,把一整个电脑拆分成一个个的小功能块,例如内存,CPU等。然后在主板中将这些功能模块组合。

这里主板就相当于main方法,CPU,内存这些模块,就相当于我们自己定义的方法,接下来我们就来认识一下Java中的方法吧!

什么是方法

方法也叫函数,就是用来解决一类问题的代码的有序组合,是一个功能模块。

怎么定义和使用方法

一般情况下,定义一个方法的语法是:

其中:

访问修饰符:在现阶段你只需要记住访问修饰符都用public即可;、

返回值类型:方法返回值的类型,如果方法不返回任何值,则返回值类型指定为void;如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用return语句返回值;

方法名:定义的方法的名字,必须使用合法的标识符;

参数列表:传递给方法的参数列表,参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开。

根据方法是否带参、是否带返回值,可将方法分为四类:

无参无返回值方法;

无参带返回值方法;

带参无返回值方法;

带参带返回值方法。

在本关你需要学习的是无参数无返回值方法。

方法的使用分两步:

第一步,定义方法:

例如:下面代码定义了一个方法名为 helloEducoder ,没有参数,且没有返回值的方法,执行的操作为输出 welcome to educoder。

注意哦

方法体放在一对大括号中,实现特定的操作;

方法名主要在调用这个方法时使用,需要注意命名的规范,一般采用第一个单词首字母小写,其它单词首字母大写的形式;

现阶段我们使用的方法都是static(静态的)。

第二步:调用方法:

输出:

welcome to educoder

编程要求

根据提示,在右侧编辑器Begin-End处补充代码,定义一个方法名为hello的方法用来和老师打招呼;

调用此方法输出如下结果:

hello teacher!

测试说明

平台会对你编写的代码进行测试,若与预期输出相同,则算通关。

开始你的任务吧,祝你成功!

参考代码:

package step1;
public class HelloWorld {
/********** Begin **********/
public static void hello(){
System.out.println("hello teacher!");
}
public static void main(String[] args) {
hello();
}
}

第2关:掌握无参有返回值方法的调用

任务描述

定义一个方法,用来计算两门课程成绩的平均值,并返回结果。

相关知识

如果方法不包含参数,但有返回值,我们称为无参带返回值的方法。

例如:下面的代码,定义了一个方法名为 numberPlus ,无参数,但返回值为 int 类型的方法,执行的操作为计算两数之和,并返回结果。

在 numberPlus() 方法中,返回值类型为 int 类型,因此在方法体中必须使用 return 返回一个整数值。

调用带返回值的方法时需要注意,由于方法执行后会返回一个结果,因此在调用带返回值方法时一般都会接收其返回值并进行处理。如:

回顾与展望

在上一节中你已经掌握了无参数无返回值方法的调用,这一节将要掌握有返回值方法的调用。

一定不可忽视的问题

1、 如果方法的返回类型为 void ,则方法中不能使用 return 返回值!

2、 方法的返回值最多只能有一个,不能返回多个值。

3、 方法返回值的类型必须兼容,例如,如果返回值类型为 int ,则不能返回 String 型值。

编程要求

请根据任务描述 ,在编辑器Begin-End中定义一个名为 calcAvg 的方法,用来计算两门课程成绩的平均值,并返回结果。

测试说明

程序会对你编写的代码进行测试:

需要你的程序输出:

平均成绩为:87.75

验货啦,验货啦,开始你的任务吧!

参考代码:

package setp7;
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 **********/
}
}

第3关: 掌握有参数无返回值方法的调用

任务描述

本关任务:编写带参方法计算两门课程考试成绩的平均分。

相关知识

有时方法的执行需要依赖于某些条件,就像生活中我们做一件事情时,也许需要前提条件,而方法的参数就相当于前提条件。

我们先来看一个带参数,但没有返回值的方法:

/**带参无返回值*/
public static void show(String name){
System.out.println(name);
}

上面的代码定义了一个 show() 方法,带有一个参数 name ,实现输出欢迎消息。

调用带参方法与调用无参方法的语法类似,但在调用时必须传入实际的参数值。

例如:

public static void main(String[] args) {
//调用方法,得到结果
show("我是Java爱好者");
}

运行后控制台打印结果为:

我是Java爱好者

很多时候,我们把定义方法时的参数称为形参,目的是用来定义方法需要传入的参数的个数和类型;把调用方法时的参数称为实参,是传递给方法真正被处理的值。

一定不可忽视的问题:

1、 调用带参方法时,必须保证实参的数量、类型、顺序与形参一一对应。

2、 调用方法时,实参不需要指定数据类型,如。

public static void main(String[] args) {

//调用方法,得到结果

show(“我是Java爱好者”);

}

3、 方法的参数可以是基本数据类型,如 int、double 等,也可以是引用数据类型,如 String、数组等。

4、 当方法参数有多个时,多个参数间以逗号分隔。

public static int test(int number1 , int number2){

System.out.println(“内部逻辑”);

}

编程要求

根据提示,在右侧编辑器Begin-End处补充代码,编写并调用求平均值的方法,传入两门成绩,求出平均值。

测试说明

测试输入:90,80

预期输出:

平均分:85

测试输入:100,90

预期输出:

平均分:95

开始你的任务吧,祝你成功!

参考代码:

package setp9;
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 **********/
// 调用方法,传入两门课程的成绩
/********** End **********/
System.out.println("平均分:"+(score1+score2)/2);
}
}
/*
* 功能:计算两门课程考试成绩的平均分并输出平均分
* 定义一个包含两个参数的方法,用来传入两门课程的成绩
*/

第4关:掌握有参数有返回值方法的调用

任务描述

本关任务:定义一个有参数有返回值方法(函数)并调用。

相关知识

要完成本关任务你需要掌握:1.怎么定义有参数有返回值的方法,2.怎么调用。

怎么定义有参数有返回值的方法

如果方法既包含参数,又带有返回值,我们称为带参带返回值的方法。

例如:下面的代码,定义了一个 welcome 方法,带有一个参数 name ,方法执行后返回一个 String 类型的结果。

怎么调用

调用带参带返回值的方法:

运行结果为: 欢迎你张三丰

编程要求

在Begin-End区域创建一个 名为getMax的方法,以两个整数作为参数, 返回两个整数变量较大的值,最后在main方法中调用该方法,传入输入的数据。

测试说明

测试输入:5,4

预期输出:

5和4比较,最大值是:5

测试输入:2,3

预期输出:

2和3比较,最大值是:3

开始你的任务吧,祝你成功!

参考代码:

package step3;
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 **********/
//在这里调用方法获取返回值
int max;
if(i>j) max=i;
else max=j;
System.out.println( i+"和"+j+"比较,最大值是:" + max );
/********** End **********/
}
/*在这里创建getMax方法,以两个整数作为参数,返回两个整数中较大的值*/
}

第5关:掌握数组作为参数的使用

任务描述

本关任务:将考试成绩排序并输出,返回成绩的个数。

在这里插入图片描述

相关知识

数组作为参数的样例:

public static void main(String[] args) {
// 调用方法时传递一个数组
int [] arrayData = {1 ,2 ,3 };
arrayManage(arrayData);
}
public static void arrayManage(int [] data){
for(int i = 0 ; i < data.length ;i++){
// 打印数组
System.out.println(data[i]);
}
}

输出结果。 1 2 3

实现思路

定义一个带有数组参数的方法;

在方法内部参考第八章数组排序将数组排序,并且打印;

返回数组的长度信息。

提示

快速输出数组的方法:

System.out.println(Arrays.toString(要输出的数组));

验货啦,验货啦,开始你的任务吧!

编程要求

根据提示,在右侧编辑器Begin-End处补充代码,程序给出了部分代码,您需要参照实现思路达到 任务描述的需求。

测试说明

程序会对你编写的代码进行测试:

需要你的程序输出下图所示:

开始你的任务吧,祝你成功!

参考代码:

package setp10;
import java.util.Arrays;
public class HelloWorld {
public static void main(String[] args) {
int[] scores={79,52,98,81};
/********** Begin **********/
//调用方法,传入成绩数组,并获取成绩的个数
int count= 4;
/********** End **********/
/********** Begin **********/
// 数组从小到大排序处理
int min=scores[0];
for(int i=0;i<scores.length;i++){
if(scores[0]>scores[i])
min=scores[i];
}
for(int i=0;i<scores.length-1;i++){
if(scores[0]>scores[i+1]){
int temp=scores[0];
scores[0]=scores[i+1];
scores[i+1]=temp;
}
}
for(int i=1;i<scores.length-1;i++){
if(scores[1]>scores[i+1]){
int temp=scores[1];
scores[1]=scores[i+1];
scores[i+1]=temp;
}
}
for(int i=2;i<scores.length-1;i++){
if(scores[2]>scores[i+1]){
int temp=scores[2];
scores[2]=scores[i+1];
scores[i+1]=temp;
}
}
System.out.println(Arrays.toString(scores));
// 打印出数组
System.out.println("共有"+count+"个成绩信息!");
//返回数组中元素的个数
}
/********** End **********/
}

第6关:方法的重载

任务描述

本小节需要你掌握一个Java方法重载的小程序,在每一个重载的方法中打印相应的语句。

相关知识

问: 什么是方法的重载呢?

答: 如果同一个类中包含了两个或两个以上方法名相同,方法参数的个数、顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了。如下所示 3 个方法名称都为 print ,但方法的参数有所不同,因此都属于方法的重载:

问: 如何区分调用的是哪个重载方法呢?

答: 当调用被重载的方法时,Java会根据参数的个数和类型来判断应该调用哪个重载方法,参数完全匹配的方法将被执行。如:

public static void main(String[] args) {
// 调用无参的方法
print();
// 调用带有一个字符串参数的方法
print("小强");
// 调用带有一个整型参数的方法
print("老肖",38);
}

运行结果:

无参的print方法

带有一个字符串参数的print方法,参数值为:小强

您好老肖,今年38岁

判断方法重载的依据:

1、 必须是在同一个类中;

2、 方法名相同;

3、 方法参数的个数、顺序或类型不同;

4、 与方法的修饰符或返回值没有关系。

敲黑板

方法重载:在同一个类中,方法名相同,参数类型不同。

编程要求

在编辑器Begin-End处对print方法进行重载,并通过传入不同的参数调用匹配的重载方法。

请在相应行中将代码填写完整。

测试说明

预期输出:

开始你的任务吧,祝你成功!

参考代码:

package setp15;
/**
* @author tangzhiqiang
* @date 2018-04-25 22:31
*/
public class HelloWorld {
public static void main(String[] args) {
}
/********** Begin **********/
public static void print(){
System.out.println("无参的print方法");
}
public static void print(String name){
System.out.println("带有一个字符串参数的print方法,参数值为:"+name);
}
public static void print(int age){
System.out.println("带有一个整型参数的print方法,参数值为:"+age);
/********** End **********/
}
}

第7关:选择题

任务描述

本关任务:此题考的是您对方法的基础常识理解程度。

相关知识

编程要求

根据相关知识,按照要求完成右侧区域内选择题任务,完成选择题。

测试说明

平台会对你选择的答案进行判断,全对则通过测试。

开始你的任务吧,祝你成功!

参考答案:

第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乘法表

测试输入:无

预期输出:

终极BOSS 等你来通关,开始你的任务吧!!!

参考代码:

package setp17;
import java.util.Arrays;
import java.util.Scanner;
public class HelloWorld {
public static int getSum(int a,int b){
int sum=a+b;
return sum;
}
public static double getAvg(double a,double b,double c){
double sum=a+b+c;
return sum/3;
}
public static void printRect(int a,int b){
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
System.out.print("*");
}
System.out.println();
}
}
public static void sortArr(int []arr){
Arrays.sort(arr);
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
public static void Print99() {
for (int i=1;i<=9;i++ ) {
for( int j=1;j<=9;j++ ) {
System.out.print(j + " * " + i + " = " + i * j + "\t");
if(j>=i){
break;
}
}
System.out.println();
}
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
getSum(sc.nextInt(),sc.nextInt());
getAvg(sc.nextDouble(),sc.nextDouble(),sc.nextDouble());
int []arr=new int[5];
for(int i=0;i<5;i++){
arr[i]=sc.nextInt();
}
Print99();
}
}
暂无回复