Java学习Day3
Java学习Day3
方法重载
- 方法名称必须相同
- 参数列表必须不同(个数不同、类型不同或参数类型排列顺序不同)
- 方法的返回类型可以相同也可以不同
- 仅返回类型不同不是方法的重载
可变参数
JDK1.5开始支持可变参数,在方法声明中,在指定参数类型后加一个省略号
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数,任何普通的参数必须在它之前声明
本质是数组
递归
递归包含两个部分:
递归头:什么时候不调用自身方法。如果没有,将陷入死循环
递归体:什么时候需要调用自身方法
尽量少用递归
//Demo 01
package com.wz.Learning.Day3;
public class Demo01 {
public static void main(String[] args) {
//递归计算阶乘
Demo01 demo01 = new Demo01();
System.out.println(demo01.factorial(13));
}
public int factorial(int n) {
if (n == 1){
return 1;
}else {
return factorial(n-1) * n;
}
}
}
//Demo02
package com.wz.Learning.Day3;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
//计算器,实现加减乘除功能,并能循环接收新的数据,通过用户交互实现
Demo02 demo02 = new Demo02();
double num2;
double tempResult;
int operate;
int flag = 0;
tempResult = demo02.getNum1();
do {
operate = demo02.chooseOperate();
if (operate == 5) {
break;
}
num2 = demo02.getNum2();
flag = switch (operate) {
case 1 -> {
tempResult = demo02.add(tempResult, num2);
yield 1;
}
case 2 -> {
tempResult = demo02.subtract(tempResult, num2);
yield 1;
}
case 3 -> {
tempResult = demo02.multiply(tempResult, num2);
yield 1;
}
case 4 -> {
tempResult = demo02.divide(tempResult, num2);
yield 1;
}
default -> flag;
};
System.out.println("当前结果为" + tempResult);
}while (flag == 1);
System.out.println("最终结果为" + tempResult);
}
public double add(double a, double b) {
return a + b;
}
public double subtract(double a, double b) {
return a - b;
}
public double multiply(double a, double b) {
return a * b;
}
public double divide(double a, double b) {
return a / b;
}
public int chooseOperate() {
int operate;
Scanner scanner = new Scanner(System.in);
System.out.println("选择操作,1:加、2:减、3:乘、4:除、5:结束");
operate = scanner.nextInt();
if (operate != 1 && operate != 2 && operate != 3 && operate != 4 && operate != 5) {
System.out.println("错误,请重新选择");
operate = chooseOperate();
}
return operate;
}
public double getNum1 () {
Scanner scanner = new Scanner(System.in);
double num1 = 0;
System.out.println("输入操作数");
if (scanner.hasNextDouble()) {
num1 = scanner.nextDouble();
} else {
System.out.println("错误,请重新输入!");
getNum1();
}
return num1;
}
public double getNum2 () {
Scanner scanner = new Scanner(System.in);
double num2 = 0;
System.out.println("输入下个操作数");
if (scanner.hasNextDouble()) {
num2 = scanner.nextDouble();
} else {
System.out.println("错误,请重新输入!");
num2 = getNum2();
}
return num2;
}
}
//鲁棒完了给我

浙公网安备 33010602011771号