函数和递归

函数

什么是函数?

Java中的函数是一组代码,用来完成一个特定的任务。

我们见过的函数:主函数。

除了主函数以外,还可以定义其它的函数,供主函数调用。

在面向对象中,函数被叫做方法。

 

函数的作用:

  1. 避免冗余代码
  2. 提高代码的可维护性
  3. 提高代码的重用性
  4. 提高代码的灵活性

函数的意义:

把统一的功能集中放在一个函数中,利于分工。

 

定义的位置:

类的内部,其他函数的外部,定义的顺序随意。

 

函数和递归

 

 

 

 

函数名、参数表、返回值类型统称为函数的三要素,在函数的声明中缺一不可。

public static 返回值类型 函数名 (参数表) {
    ……
}

 

  • 返回值类型:
  • 表示函数执行以后返回的结果的数据类型
  • 可以是Java中的任何数据类型
  • 如果没有结果则为void

 

 

函数名(参数)

函数调用时传递的参数叫实参

函数调用的过程中,会把实参的值传递给函数的形参

调用时,实参的个数、类型、顺序必须和定义时相同

 

函数的调用: 如果被调用的函数有返回值,则可以把函数调用看成是表达式

表达式的类型为函数的返回值类型

表达式的值为函数的返回值

调用函数时,程序的流程会进入到被调用的函数中

被调用的函数结束后,程序的流程会回到函数调用点

 

函数的调用: 如果被调用的函数有返回值,则可以把函数调用看成是表达式

表达式的类型为函数的返回值类型

表达式的值为函数的返回值 调用函数时,程序的流程会进入到被调用的函数中

被调用的函数结束后,程序的流程会回到函数调用点

 

函数调用时程序执行的流程:

void main ( ) {
    ……
    method1 ( );
    ……
    method1 ( );
    ……
}

函数的嵌套调用:

一个函数中又调用了其它函数,叫做函数的嵌套调用。

一个函数的形参在调用其他函数时,可以作为实参传值。

函数和递归

 

 

 ATM改进:

package com.mycode;

import java.util.Scanner;

public class four {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double balance = 1000000.0;           //定义账户余额
        boolean f=false;

        f = dengLu(f);

        while (f){
        if (f == true) {                           //登录界面
            System.out.println("登录成功\n\t请选择你需要的服务");
            System.out.println("1.查询账户余额");
            System.out.println("2.存款");
            System.out.println("3.取款");
            System.out.println("4.取卡");

            int s = scanner.nextInt();       //定义一个输入选项

            switch (s) {                         //编辑菜单
                case 1:
                    System.out.println("您的账户余额为:" + balance);
                    break;
                case 2:
                    cunK(balance, scanner);
                    break;
                case 3:
                    quK(balance, scanner);
                    break;
                case 4:

                    System.out.println("谢谢使用,再见!");
                    return;
                default:
                    System.out.println("输入错误,请重新输入");

            }
        }}

    }


    public static boolean dengLu(boolean f) {
        int password=123456;
         f = false;                    //定义f不正确
        Scanner scanner = new Scanner(System.in);
        for (int j = 3; j >= 0; j--) {             //输入密码次数
            System.out.println("请输入密码");

            int a = scanner.nextInt();
            if (a == password) {                   //输入正确的时候结束
                f = true;
                break;
            } else {                             //否则从新输入
                System.out.println("密码错误:请从新输入密码\n" + "剩余" + j + "次机会");
            }
        }
        return f;

    }
    public static void cunK(double balance,Scanner scanner){

        System.out.println("1,人民币\t 2,美元");
        int i=scanner.nextInt();
        switch (i){
            case 1:
                for (;;){
                    System.out.println("请输入你想要存的的人民币");
                    double money = scanner.nextDouble();
                    if (money % 100 == 0 & money >= 100) {
                        balance += money;
                        System.out.println("存款成功\n账户余额为:" + balance);
                        break;
                    } else {
                        System.out.println("请输入100的倍数");
                    }}
                break;
            case 2:
                for (;;){
                    System.out.println("请输入你想要存的的美元");
                    double dollor = scanner.nextDouble();
                    if (dollor % 100 == 0 & dollor >= 100) {
                        balance += (6.3965*dollor);
                        System.out.println("存款成功\n账户余额为:" + balance);
                        break;
                    } else {
                        System.out.println("请输入100的倍数");
                    }}
                break;
        }


    }
    public static void quK(double balance,Scanner scanner){
        System.out.println("1,人民币\t 2,美元");
        int i=scanner.nextInt();
        switch (i){
            case 1:
                    for (;;){
                    System.out.println("请输入你想要取走的人民币");
                    double quk = scanner.nextDouble();
                    if (quk <= balance & quk % 100 == 0 & quk >= 100) {
                        balance -= quk;
                        System.out.println("取款成功\n账户余额:" + balance);
                        break;
                    } else if (quk > balance) {
                        System.out.println("您的余额不足。");

                    } else {
                        System.out.println("请输入100的倍数");

                    }}
                    break;
            case 2:
                    for (;;){
                    System.out.println("请输入你想要取走的美元");
                    double dollic = scanner.nextDouble();
                    if (dollic <= balance & dollic % 100 == 0 & dollic >= 100) {
                        balance -= (6.3965*dollic);
                        System.out.println("取款成功\n账户余额:" + balance);
                        break;
                    } else if (dollic > balance) {
                        System.out.println("您的余额不足。");

                    } else {
                        System.out.println("请输入100的倍数");

                    }}
                    break;
        }

    }

}

 

上一篇:自定义对象流


下一篇:CF1598F - RBS (状压dp)