方法的重载&可变参数&递归函数&计算器

167 阅读2分钟

方法的重载&可变参数&递归函数&计算器

方法的重载

  1. 重载就是在一个类中,有相同的函数名称,但形参不同的函数
  2. 重载中方法名必须相同,参数列表必须不同(个数不同,或者类型不同,或者参数排列顺序不同方法的返回类型可以相同也可以不同,仅仅返回值不同不足以成为方法的重载
  3. 重载实现的理论,方法名撑相同时,编译器会根据调用方法的参数个数,参数类型等去逐个匹配,以选择对象的方法。如果匹配失败,编译器就会报错。

一个类中有两个相同名字的方法

可变参数

  1. Java支持传递同类型的可变参数给一个方法
  2. 在声明方法中,在指定参数类型后加一个省略号(...)
  3. 一个方法只能指定一个可变参数,它必须是方法的最后一个参数,任何普通参数必须在它声明之前

代码演示(输出最大值)

    public static void main(String[] args) {
//        调用可变参数的方法
        printMax(1,2,3,4,5);
        printMax(new double[]{1,2,3});
    }
    public static void printMax(double... i){
        if(i.length==0){
            System.out.println("没有");
            return;
        }
        double result=i[0] ;
        for (int j = 1; j < i.length; j++) {
            if (i[j]>result) {
                result=i[j];
            }
        }
        System.out.println("最大的数"+result);
    }

alt+回车==>自动补全

mspnt:在运行(win+r)中输入,就会打开画图工具

递归函数

递归结构包括两个部分:

递归头:什么时候不调用自身方法,如果没有头,将陷入死循环

递归体:什么时候需要调用自身方法

在基数比较小的前提下使用递归,其他时候尽量不使用递归。

代码演示(阶乘):

    public static void main(String[] args) {
        System.out.println(test(3));
    }
    public static int test(int n){
        if (n==1) {
            return n;
        } else {
            return n*test(n-1);
        }
    }

简易计算器

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        char q;
        do {
            System.out.println("请输入第两个数字进行简单的加减乘除");
            double num1 = s.nextDouble();
            char operator = s.next().charAt(0);
            double num2 = s.nextDouble();
            switch (operator) {
                case '+':
                    System.out.println(add(num1, num2));
                    break;
                case '-':
                    System.out.println(subtract(num1, num2));
                    break;
                case '*':
                    System.out.println(multiply(num1, num2));
                    break;
                case '/':
                    System.out.println(divide(num1, num2));
                    break;
                default:
                    System.out.println("你输入的运算符不对哦");
            }
            System.out.println("是否重新进行运算?请输入y/n");
            q =s.next().charAt(0);
        }while (q =='y');
        System.out.println("亲,感谢你的使用哦");
        s.close();
    }

    public static double add(double n,double m) {
        return n+m;
    }
    public static double subtract(double n,double m) {
        return n-m;
    }
    public static double multiply(double n,double m) {
        return n*m;
    }
    public static double divide(double n,double m) {
        return n/m;
    }

Snipaste_2022-04-21_10-20-32.jpg