方法

方法

方法的概念

  • 修饰符:是可选的,告诉编译器如何调用该方法,定义了该方法的访问类型
  • 返回值类型:方法可能会有返回值。有些方法执行操作但没有返回值,这种情况下其关键字为void
  • 方法名:方法的实际名称。方法名和参数表共同构成方法签名
  • 形参:用于定义作用的
  • 实参:实际调用时传输的参数
  • 方法体:方法体包含具体的语句,定义该方法的功能
//   修饰符       方法名    形参
public static int max(int num1,int num2){
        int result=num2;

        if(num1==num2){
            System.out.println("两数相同");
            return result;//终止方法
        }

        if(num1>num2){
            result = num1;
        }

        return result;//返回结果
    }

方法的重载

方法重载的规则

  1. 方法的名称必须相同
  2. 参数列表必须有不同(个数不同、类型不同、参数排列顺序不同等)
  3. 方法的返回类型可以相同或不同
  4. 仅仅返回类型不同不足以成为方法的重载
  5. 实现理论:方法名称相同时,编译器会根据调用方法的参数个数。参数类型等去逐个匹配,以选择对应的方法;若匹配失败,编译器报错
public static int max(int num1,int num2){}
public static double max(double num1,double num2){}
//根据调用时所给的参数类型,会调用不同的方法

命令行传参(仅了解)

通过命令行传参给main方法

可变参数/不定向参数

规则:

  1. 在方法声明时,在指定参数类型后加一个省略号...
  2. 一个方法中只能指定一个可变参数,它必须是方法最后一个参数
public class Demo04 {
    public static void main(String[] args) {
        Demo04 demo04 = new Demo04();
        demo04.test(1,2,3,4,5);
    }

    public void test(int...i) {
        System.out.println(i[0]);
        System.out.println(i[1]);
        System.out.println(i[2]);
        System.out.println(i[3]);
        System.out.println(i[4]);
    }
}

递归

递归结构包括两个部分:

  1. 递归头:什么时候不调用自身方法,若没有头将陷入死循环
  2. 递归体:什么时候需要调用自身方法
public class Demo05 {
    public static void main(String[] args) {
        //阶乘
        Scanner scanner = new Scanner(System.in);

        System.out.println("计算阶乘,请输入数字:");

        int n = scanner.nextInt();

        scanner.close();

        System.out.println("结果为:"+factorial(n));

    }

    public static int factorial(int n){
        if(n==1){
            return 1;//递归头,程序结束
        }else{
            return n*factorial(n-1);//递归
        }
    }
}

练习

设计加减乘除计算器

仅练习,未考虑输入非数字等情况

package com.Bry5e.method;

import java.util.Scanner;

public class Practice {
    //计算加减乘除的计算器

    static Scanner scanner = new Scanner(System.in);//应用scanner
    static double result;//定义类变量 结果

    public static void main(String[] args) {

        String symbol = "?";//定义 符号

        System.out.println("请输入数字:");
        result = scanner.nextDouble();//接受第一个数字

        int flag = 1;//循环标志

        while (flag==1) {

            System.out.println("请输入+-*/=:");

            symbol = scanner.next();

            switch (symbol) {
                case "+":
                    result = plus(result);
                    break;

                case "-":
                    result = subtract(result);
                    break;

                case "*":
                    result = multiply(result);
                    break;

                case "/":
                    result = divide(result);
                    break;

                case "=":
                    System.out.println("结果为:"+result);
                    flag = 0;
                    break;

                default:
                    System.out.println("输出错误!");
                    flag = 0;
                    break;
            }
        }
        scanner.close();
    }

    public static double plus(double result) {
        System.out.println("请输入数字:");
        double num = scanner.nextDouble();//接收下一位数字
        result += num;//完成对应的运算
        return result;//返回运算结果
    }

    public static double subtract(double result) {
        System.out.println("请输入数字:");
        double num = scanner.nextDouble();
        result -= num;
        return result;
    }

    public static double multiply(double result) {
        System.out.println("请输入数字:");
        double num = scanner.nextDouble();
        result *= num;
        return result;
    }

    public static double divide(double result) {
        System.out.println("请输入数字:");
        double num = scanner.nextDouble();
        result /= num;
        return result;
    }
}

posted @ 2021-03-01 23:14  Bry5e  阅读(22)  评论(0)    收藏  举报