3 Java方法篇

什么是方法?

  • 解决一类问题的步骤的有序组合
  • 包含于类或者对象中
  • 在程序中被创建,在其他地方被引用
  • 最好是一个方法只完成一个功能

方法的定义

修饰符 返回值类型 方法名 (参数类型 参数名){

...

方法体

...

return 返回值;

}

修饰符

可选,定义该方法的访问类型。

返回值类型

方法可能会返回值。如果没有返回值,则用关键字viod。

参数类型

类似一个占位符,当方法被调用时,传递值给参数。可选。

形式参数

在方法被调用时,接收外界输入的数据。

实参

调用方法时,实际传递给方法的数据。

方法体

具体的语句,定义该方法的功能。

eg

image-20260125163209834

image-20260125164941204

方法的调用

package com.fan.Mothed;

public class Demo06 {
    public static void main(String[] args) {
        //调用有返回值的方法
        //1.可以自定义变量接收结果
        int x = sum(10,20);
        System.out.println(x);
        //2.可以直接输出调用
        System.out.println(sum(10 ,30));
        //3.甚至直接调用
        sum(10,50); //单纯调用方法跑一遍,不要求结果

        //调用无返回值的方法
        //1.只能直接调用
        printHelloWorld(3);
    }
    public static void printHelloWorld(int n){
        for (int i = 1; i <= n; i++) {
            System.out.println("Hello World!");

        }
    }
    public static int sum (int a,int b){
        int c = a + b;
        return c;
    }
}

方法的重载

方法名一样,参数不一样;

输入不同方法时,调用同名方法的不同参数。

  1. 方法名称必须相同
  2. 参数列表必须不同(个数不同,类型不同,参数排列顺序不同等)
  3. 方法的返回类型可以相同也可以不同
  4. 仅仅返回类型不同不足以成为方法的重载

理论原理:

方法名称相同时,编译器会根据调用方法的参数的个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。

命令行传递参数

  • 没听懂

可变参数

指定参数类型后加(...)即为可变参数

image-20260126134136669

目的:

  • 传递同类型的参数,不用额外去多定义
  • 用于我们不知道要传递的参数的数量的方法

递归

image-20260126142657628

image-20260126143947013

先执行代码,后返回结果。

练习,编写简单计算机

package com.fan.Mothed;

import java.util.Scanner;

public class Demo05 {
    public static void main(String[] args) {
        double x = 0;
        long i = 2;
        Scanner scanner1 = new Scanner(System.in);
        Scanner scanner2 = new Scanner(System.in);
        Scanner scanner3 = new Scanner(System.in);
        Scanner scanner4 = new Scanner(System.in);
        Scanner scanner5 = new Scanner(System.in);
        System.out.println("请输入第一个数:");
        double nmu1 = scanner1.nextDouble();
        System.out.println("请输入您要计算的类型:");
        String sign = scanner3.nextLine();
        System.out.println("请输入第二个数:");
        double nmu2 = scanner2.nextDouble();
        switch (sign){
            case ("+"):
                System.out.println("x"+"="+add(nmu1,nmu2));
                double a = add(nmu1,nmu2);
                x = a;
                break;
            case ("-"):
                System.out.println("x"+"="+sub(nmu1,nmu2));
                double s = sub(nmu1,nmu2);
                x = s;
                break;
            case ("*"):
                System.out.println("x"+"="+mul(nmu1,nmu2));
                double m = mul(nmu1,nmu2);
                x = m;
                break;
            case ("/"):
                System.out.println("x"+"="+div(nmu1,nmu2));
                double d = div(nmu1,nmu2);
                x = d;
                break;
            default:
                System.out.println("不会!");
                return;
        }
           while (true) {
                i++;
                System.out.println("请输入您要计算的类型:");
                String sign1 = scanner4.nextLine();
                System.out.println("请输入第" + i + "个数:");
                if (scanner5.hasNextDouble()) {
                    double num5 = scanner5.nextDouble();
                    switch (sign1) {
                        case ("+"):
                            System.out.println("x"+"="+add(x, num5));
                            x = add(x, num5);
                            break;
                        case ("-"):
                            System.out.println("x"+"="+sub(x, num5));
                            x = sub(x, num5);
                            break;
                        case ("*"):
                            System.out.println("x"+"="+mul(x, num5));
                            x = mul(x, num5);
                            break;
                        case ("/"):
                            System.out.println("x"+"="+div(x, num5));
                            x = div(x, num5);
                            break;
                        default:
                            System.out.println("不会!");
                            return;
                    }
                }else {
                    return;
                }
            }
    }
    //加
    public static double add (double a,double b){
        return a+b;
    }
    //减
    public static double sub (double a,double b){
        return a-b;
    }
    //乘
    public static double mul (double a,double b){
        return a*b;
    }
    //除
    public static double div (double a,double b) {
        return a/b;
    }

}

  • 第一二个数字没有纠错编程

  • 第一二个数字如果输入非数字时,程序报错并中止

  • 输入除了加减乘除之外的运算类型时,输出(不会!)并中止程序

  • 在第一二个数字后,输入非数字,程序中止

posted @ 2026-01-27 12:20  Shadow001  阅读(0)  评论(0)    收藏  举报