Java小demo-银行存款系统

14 阅读2分钟
  • 程序需要使用java.util.Scanner类,用于从控制台读取用户输入。

Scanner是Java中用来读取用户输入的工具类,主要从控制台或文件中扫描并解析文本数据,比如整数、小数或字符串。

  • 快速上手Scanner
  1. 先导包:在代码开头写import java.util.Scanner;,只有java.lang包下的内容不用导包。
  2. 创建对象:绑定输入源,控制台输入固定写Scanner sc = new Scanner(System.in);
  3. 读取数据:调用对应的nextXxx()方法获取输入,比如nextInt()读整数、nextLine()读一整行字符串。
  4. 用完关闭:调用close()释放资源,或者用try-with-resources语句自动关闭。‌‌‌
  • next()和nextLine()有啥区别
  1. next():只读到空格或回车前的有效字符,遇到空格就停止,光标停在当前行,不能读带空格的字符串
  2. nextLine():读取整行内容包括空格,直到遇到回车键才结束,光标移到下一行,可以读带空格的文本
  3. 常见坑点:先用nextInt()再用nextLine()时,回车符会留在缓冲区被下一行的nextLine()直接读走,解决方法是在中间加一个scanner.nextLine()消耗掉遗留的回车符。‌‌‌
  • 怎么避免程序崩溃
  1. 输入前先判断:用hasNextInt()hasNextDouble()等方法检查输入是否匹配,避免用户输错类型导致程序报错。
  2. 循环提示重输:如果输入不合法,用while循环让用户重新输入直到正确。
  3. 处理异常:用try-catch块捕获InputMismatchException异常,给出友好提示
  • 代码:
import java.util.Scanner;

public class BankMenu {
    private static double balance = 0;

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

        while (true) {
            System.out.println("请选择您的操作:");
            System.out.println("1:查询余额");
            System.out.println("2:存款");
            System.out.println("3:取款");
            System.out.println("4:退出程序");

            int choice = scanner.nextInt();

            switch (choice) {
                case 1 -> {
                    System.out.println("当前余额为:" + balance);
                }
                case 2 -> {
                    System.out.println("请输入存款金额:");
                    double money = scanner.nextDouble();
                    balance += money;
                    System.out.println("存款成功,当前余额为:" + balance);
                }
                case 3 -> {
                    System.out.println("请输入取款金额:");
                    double money = scanner.nextDouble();
                    if (money > balance) {
                        System.out.println("取款失败,余额不足");
                    } else {
                        balance -= money;
                        System.out.println("取款成功,当前余额为:" + balance);
                    }
                }
                case 4 -> {
                    System.out.println("程序已退出");
                    scanner.close();
                    return;
                }
                default -> {
                    System.out.println("没有这个选项,请重新输入");
                }
            }
        }
    }
}