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;
    }
}
//鲁棒完了给我
posted @ 2025-04-13 16:32  8智1敏1力  阅读(23)  评论(0)    收藏  举报