方法
方法是具有特定功能的一段独立的小程序(代码块)
方法能提高代码的 复用性、维护性
格式
修饰符 返回值类型 name(datatype 形参1,datatype 形参2){
执行语句;
return 返回值;
}
两个明确:
- 明确 参数列表
- 明确 返回值类型
注意事项:
- 方法间是平级关系,不能互相嵌套
- 方法的返回值类型一定要和返回值匹配
- 方法的返回值类型为 void 时,代表无返回值;**return;**即可,也可以直接省略
- ** return **关键字作用
- 返回某个数据
- 作为方法结束的标记
调用
- 单独调用
- 输出调用
- 返回值类型为 void 时,无法使用
- 赋值调用
- 返回值类型为 void 时,无法使用
形式参数和实际参数
- 形式参数
- 定义 方法时,括号里面的参数
- 实际参数
- 调用 方法时,有时需要传递参数,传递的参数
重载
在同一个类中,出现两个方法的名字相同,参数列表不同 的,这就叫做方法的重载。
参数列表的顺序、数量、类型均可造成方法的重载
练习
分析以下需求,并用代码实现(每个小需求都需要封装成方法)
1.判断两个数据是否相等(整数和小数)
2.获取两个数中较大的值(整数和小数)
3.获取两个数中较小的值(整数和小数)
4.否能用一个方法实现3和4的两个功能
import java.util.Scanner;
public class method02 {
public static void main(String[] args) {
Scanner sc1 = new Scanner(System.in);
System.out.println("请输入一个整数:");
int a =sc1.nextInt();
Scanner sc2 = new Scanner(System.in);
System.out.println("请输入一个小数:");
double b = sc2.nextDouble();
System.out.println("数值较大的是:" + bigger(a,b));
}
public static boolean isEqual(int a,double b) {
boolean tag = false;
if(a == b) {
tag = true;
}
return tag;
}
public static String bigger(int a,double b) {
String str = "";
if(a >= b) {
str = str.valueOf(a);
}else {
str = str.valueOf(b);
}
return str;
}
public static String[] compare(int a,double b) {
String[] str = new String[2];
if(a >= b) {
str[0] = Integer.toString(a);
str[1] = Double.toString(b);
}else {
str[1] = Integer.toString(a);
str[0] = Double.toString(b);
}
return str;
}
public static String[] compare(int a,double b) {//通过返回一个数组实现返回两个数的功能
String[] str = new String[2];
if(a >= b) {
str[0] = Integer.toString(a);
str[1] = Double.toString(b);
}else {
str[1] = Integer.toString(a);
str[0] = Double.toString(b);
}
return str;
}
}
分析以下需求,并用代码实现
1.键盘录入长方形的长和宽
定义方法计算该长方形的周长,并在main方法中打印周长
2.键盘录入长方形的长和宽
定义方法计算该长方形的面积,并在main方法中打印面积
3.键盘录入圆的半径
定义方法计算该圆的周长,并在main方法中打印周长
4.键盘录入圆的半径
定义方法计算该圆的面积,并在main方法中打印面积
import java.util.Scanner;
public class method03 {
public static void main(String[] args) {
double cirR = cirRectangle();
System.out.println("长方形的周长为:"+cirR);
double areaR =areaRectangle();
System.out.println("长方形的面积为:"+areaR);
double cirC =cirCircle();
System.out.println("圆的周长为:"+cirC);
double areaC =areaCircle();
System.out.println("圆的面积为:"+areaC);
}
public static double cirRectangle() {
Scanner sc1 = new Scanner(System.in);
System.out.println("请输入长方形的长度:");
double a =sc1.nextDouble();
Scanner sc2 = new Scanner(System.in);
System.out.println("请输入长方形的宽度:");
double b = sc2.nextDouble();
double cir = 0.0;
cir = a*2 + b*2;
return cir;
}
public static double areaRectangle() {
Scanner sc1 = new Scanner(System.in);
System.out.println("请输入长方形的长度:");
double a =sc1.nextDouble();
Scanner sc2 = new Scanner(System.in);
System.out.println("请输入长方形的宽度:");
double b = sc2.nextDouble();
double area = 0.0;
area = a*b;
return area;
}
public static double cirCircle() {
double cir = 0.0;
Scanner sc = new Scanner(System.in);
System.out.println("请输入圆的半径:");
double r =sc.nextDouble();
cir = 2*r*Math.PI;// π 在Java里用 Math.PI 表示
return cir;
}
public static double areaCircle() {
double area = 0.0;
Scanner sc = new Scanner(System.in);
System.out.println("请输入圆的半径:");
double r =sc.nextDouble();
area = r*r*Math.PI;
return area;
}
}
分析以下需求,并用代码实现
1.键盘录入班级人数
2.根据录入的班级人数创建数组
3.通过键盘录入将班级每个人的分数录入到数组容器中
4.要求:
(1)打印该班级的不及格人数
(2)打印该班级的平均分
(3)演示格式如下:
请输入班级人数:
键盘录入:100
请输入第一个学员分数
键盘录入:20
请输入第二个学员的分数
键盘录入:98
控制台输出:
不及格人数:19
班级平均分:87
import java.util.Scanner;
public class method04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入班级人数:");
int num = sc.nextInt();
int[] group = new int[num];
System.out.println("现在开始进行成绩录入!");
scoreIn(num,group);
System.out.println("不及格人数:" + notPass(group));
System.out.println("班级平均分:" + average(group));
}
public static void scoreIn(int num,int[] group) {
Scanner sc = new Scanner(System.in);
for(int i = 0;i < num;i++ ) {
int j = 0;
System.out.println("请输入第" + (i + 1) +"个学员的分数");
j = sc.nextInt();
group[i] = j;
}
}
public static int notPass(int[] group) {
int num = 0;
for(int i = 0;i < group.length;i++) {
if(group[i] < 60) {
num++;
}
}
return num;
}
public static int average(int[] group) {
int sum = 0,ave = 0;
for(int i = 0;i < group.length;i++) {
sum += group[i];
}
ave = sum / group.length;
return ave;
}
}