赞
踩
本关任务:定义一个用来和老师打招呼的方法。
为了完成本关任务你需要掌握: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!");
- }
- //定义一个方法,用来和老师打招呼
-
- /********** End **********/
- public static void main(String[] args) {
-
- /********** Begin **********/
- hello();
- //调用方法
-
- /********** End **********/
- }
- }
定义一个方法,用来计算两门课程成绩的平均值,并返回结果。
如果方法不包含参数,但有返回值,我们称为无参带返回值的方法。
例如:下面的代码,定义了一个方法名为 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 avg;
- // 使用return返回值
-
-
- /********** End **********/
- }
- }
本关任务:编写带参方法计算两门课程考试成绩的平均分。
有时方法的执行需要依赖于某些条件,就像生活中我们做一件事情时,也许需要前提条件,而方法的参数就相当于前提条件。
我们先来看一个带参数,但没有返回值的方法:
/*
*带参无返回值
*/
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 **********/
- // 调用方法,传入两门课程的成绩
- calcAvg(score1,score2);
- /********** End **********/
- }
-
- /*
- * 功能:计算两门课程考试成绩的平均分并输出平均分
- * 定义一个包含两个参数的方法,用来传入两门课程的成绩
- */
- /********** Begin **********/
- public static void calcAvg(int score1,int score2){
- int score=0;
- score=(score1+score2)/2;
- System.out.println("平均分:"+score);
- }
-
- /********** End **********/
-
- }
本关任务:定义一个有参数有返回值方法(函数)并调用。
要完成本关任务你需要掌握: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 a =getMax(i,j);
- System.out.println( i+"和"+j+"比较,最大值是:" + a );
- /********** End **********/
- }
-
- /*在这里创建getMax方法,以两个整数作为参数,返回两个整数中较大的值*/
-
- /********** Begin **********/
- public static int getMax(int x,int y){
- if(x>y)
- return x;
- else return y;
-
- }
-
- /********** End **********/
- }
本关任务:将考试成绩排序并输出,返回成绩的个数。
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=sort(scores);
-
- /********** End **********/
- System.out.println("共有"+count+"个成绩信息!");
- }
-
- /*
- * 功能:将考试成绩排序并输出,返回成绩的个数
- *
- */
- /********** Begin **********/
- public static int sort(int[] data){
- // 数组从小到大排序处理
-
- for(int i=0;i<data.length-1;i++){
- for(int j=i+1;j<data.length;j++){
- if(data[i]>data[j])
- {
- int temp=data[i];
- data[i]=data[j];
- data[j]=temp;
- }
- }
- }
- // 打印出数组
- System.out.println(Arrays.toString(data));
- //返回数组中元素的个数
- return 4;
- }
- /********** End **********/
- }
本小节需要你掌握一个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 **********/
- // 调用无参的方法
- print();
- // 调用带有一个字符串参数的方法
- print("educoder") ; // 调用带有一个整型参数的方法
- print(666);
- /********** End **********/
- }
-
- /********** Begin **********/
- // 无参print方法的定义
- public static void print(){
- System.out.println("无参的print方法");
- }
-
- // 字符串print方法的定义
-
- public static void print(String name){
- System.out.println("带有一个字符串参数的print方法,参数值为:"+name);
- }
- // 整型print方法的定义
- public static void print(int a){
- System.out.println("带有一个整型参数的print方法,参数值为:"+a);
- }
-
- /********** End **********/
- }
1、请选择下列选项中对方法描述正确的所有选项:BDE
A、方法重载时方法名不能相同本关任务:
定义一个方法,接收两个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
乘法表
测试输入:无
预期输出:
- package setp17;
-
- import java.util.Arrays;
- import java.util.Scanner;
-
- public class HelloWorld {
-
- /********** Begin **********/
- /**
- * 第一题:定义一个方法 接收两个整数类型的参数 a和b,返回两个数的和 返回值类型为int 方法名为:getSum
- */
- public static int getSum(int a ,int b){
- int sum = a + b;
- return sum;}
-
-
- /**
- * 第二题: 定义一个方法 接收三个double类型参数a,b,c, 返回这三个数的平均值 返回值类型为double 方法名为:getAvg
- */
- public static double getAvg(double a ,double b,double c){
- double avg = (a + b + c) / 3;
- return avg;}
-
- /**
- * 第三题: 定义一个方法 接收两个参数 a 和b 打印a行 b列的一个矩形 不需要返回值 方法名为:printRect
- */
- public static void printRect(int a , int b){
- for (int i = 1 ; i <= a ;i++) {
- for (int k = 1 ; k <= b;k++){
- System.out.print("*");
- }
- System.out.println();
- }
- }
-
-
-
- /**
- * 第四题:定以一个方法,接收整形数组 为参数 对这个数组进行升序排序 最后输出该数组 不需要返回值 方法名为 sortArr
- */
- public static void sortArr(int[] arr){
- for(int i = 0; i< arr.length-1;i++){
- for(int j = i+1; j< arr.length;j++){
- if(arr[i] > arr[j]){
- int tmp = arr[i];
- arr[i] = arr[j];
- arr[j] = tmp;
- }
- }
- }
- for(int i = 0; i< arr.length;i++){
- System.out.println(arr[i]);
- }
- }
-
-
-
- /**
- * 第五题
- * 你只需要实现for 循环括号的内容就可 ,打印语句系统已经给你完成
- */
- public static void Print99() {
- for ( int i = 1 ; i<=9;i++ ) {
- for( int j = 1;j <= i ;j++) {
- System.out.print(j + " * " + i + " = " + i * j + "\t");
- }
- System.out.println();
- }
- }
-
- /********** End **********/
-
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。