JAVA方法

一、方法的定义以及调用

设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成1个功能,这样利于我们后期的扩展

public static void main(String[] args) {
        int max = max(10, 10);
        System.out.println(max);
    }

    //比大小的方法
    public static int max(int num1, int num2) {
        int result = 0;
        if (num1 == num2) {
            System.out.println("num1==num2");
            return 0;  //终止方法
        }
        if (num1 > num2) {
            result = num1;
        } else {
            result = num2;
        }

        return result;
    }

二、方法重载

 public static void main(String[] args) {
        int max = max(10, 10);
        System.out.println(max);
    }

    //比大小的方法
    public static int max(int num1, int num2) {
        int result = 0;
        if (num1 == num2) {
            System.out.println("num1==num2");
            return 0;  //终止方法
        }
        if (num1 > num2) {
            result = num1;
        } else {
            result = num2;
        }

        return result;
    }
    public static int max(int num1, int num2,int num3) {
        int result = 0;
        if (num1 == num2 && num1==num3) {
            System.out.println("num1==num2==num3");
            return 0;  //终止方法
        }
        if (num1 > num2&&num1>num3) {
            result = num1;
        } else if(num1 > num2&&num1<num3) {
            result = num3;
        }else {
            result=num2;
        }

        return result;
    }
    public static double max(double num1, double num2) {  //方法的重载:参数类型或个数或顺序不同,方法名字相同
        double result = 0;
        if (num1 == num2) {
            System.out.println("num1==num2");
            return 0;  //终止方法
        }
        if (num1 > num2) {
            result = num1;
        } else {
            result = num2;
        }

        return result;
    }

三、命令行传参

有时候你希望运行一个程序时候再传递给它消息。这要靠传递命令行参数给main()函数实现。

public class Demo03 {
    public static void main(String[] args) {
        for (int i = 0; i < args.length; i++) {
            System.out.println(args[i]);
        }
    }
}

四、可变参数

public static void main(String[] args) {
        Demo04 demo04 = new Demo04();
        demo04.test(1,2);//通过对象调用
    }
    public void test( int  x,int...i){//可变参数要放最后
        System.out.println(i[0]);
    }

五、递归

 public static void main(String[] args) {
        // 递归思想,小基数可以使用,大基数换个方法,因为会导致内存不足
        int f = f(5);
        System.out.println(f);
    }
    public static int f(int n){
        if(n==1){
            return 1;
        }else{
            return n*f(n-1);
        }
    }

练习:

写一个计算器,实现加减乘除的功能,并且能够循环接受新的数据,通过用户交互实现。

public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        while (true) {
            System.out.println("1.加法运算 2.减法运算 3.乘法运算 4.除法运算 0.退出");
            System.out.println("请输入您想进行的运算编号:");
            int playNumber = scanner.nextInt();
            if (playNumber == 0) {
                break;
            } else if (playNumber != 1 && playNumber != 2 && playNumber != 3 && playNumber != 4) {
                System.out.println("选项不正确,请重选!");
            }else{
                System.out.println("请输入第一个数字:");
                double num1 = scanner.nextDouble();
                System.out.println("请输入第二个数字:");
                double num2 = scanner.nextDouble();
                play(playNumber, num1, num2);
            }
        }
    }

    public static void play(int n, double num1, double num2) {
        switch (n) {
            case 1:
                System.out.println("加法结果是:" + add(num1, num2));
                break;
            case 2:
                System.out.println("减法结果是" + jian(num1, num2));
                break;
            case 3:
                System.out.println("乘法结果是" + cheng(num1, num2));
                break;
            case 4:
                System.out.println("除法结果是:" + chu(num1, num2));
                break;
            default:
                System.out.println("选项不正确");
        }
    }

    public static double add(double num1, double num2) {
        return num1 + num2;
    }

    public static double jian(double num1, double num2) {
        if (num1 > num2) {
            return num1 - num2;
        } else {
            return num2 - num1;
        }
    }

    public static double cheng(double num1, double num2) {
        return num1 * num2;
    }

    public static double chu(double num1, double num2) {
        return num1 / num2;
    }
}