ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

函数和递归

2021-10-22 17:03:10  阅读:126  来源: 互联网

标签:scanner 函数 递归 System println balance out


函数

什么是函数?

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;
        }

    }

}

 

标签:scanner,函数,递归,System,println,balance,out
来源: https://www.cnblogs.com/yinghualubanxia/p/15439773.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有