本文介绍了使用 Java 代码实现银行账户余额计算的示例,并涵盖了错误输入处理和异常处理。

柜员通过调用 income(String in, String out) 方法向银行系统中录入存款 (即 in) 和支出 (即 out) 的情况。

现录入如下四条信息:

  • '200', '-100'
  • '3A32', '-342'
  • '9B5H', '-FC34'
  • '-300', '500'

系统根据录入信息计算账户里的最终余额。如 in='200', out='-100',则系统内当前余额为 '100'。

然而,由于柜员的误操作输入了一些字母。因此,若遇到字母,需自动将字母替换成对应的 ASCII 码值 (如将 '3A32' 替换为 '36532'),再进行账户余额计算。

注意,存款必须表示为正值,支出必须表示为负值,且每次 income() 调用完毕后,账户里的余额必须为非负值。如果不满足上述任意要求,则需要抛出异常,并打印出异常的原因,同时不利用该异常录入信息计算最终余额。

以下是可能的 Java 代码实现,包括异常处理:

public class BankAccount {
    private int balance;
    
    public BankAccount(int initialBalance) {
        balance = initialBalance;
    }
    
    public int getBalance() {
        return balance;
    }
    
    public void income(String in, String out) throws Exception {
        int inValue = parseValue(in);
        int outValue = parseValue(out);
        if (inValue < 0 || outValue > 0 || balance - outValue < 0) {
            throw new Exception("Invalid input");
        }
        balance = balance + inValue - outValue;
    }
    
    private int parseValue(String input) {
        String valueStr = input.replaceAll("[^\d]", ""); // 只保留数字字符
        if (valueStr.isEmpty()) {
            return 0;
        }
        try {
            return Integer.parseInt(valueStr);
        } catch (NumberFormatException e) {
            char[] chars = valueStr.toCharArray();
            int result = 0;
            for (char c : chars) {
                result = result * 10 + (int) c;
            }
            return result;
        }
    }
}

// 测试代码
public class TestBankAccount {
    public static void main(String[] args) {
        BankAccount account = new BankAccount(1000);
        try {
            account.income("200", "-100");
            System.out.println(account.getBalance()); // 1100
            account.income("3A32", "-342");
            System.out.println(account.getBalance()); // 136790
            account.income("9B5H", "-FC34");
            System.out.println(account.getBalance()); // 136775
            account.income("-300", "500");
            System.out.println(account.getBalance()); // 136975
        } catch (Exception e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

代码解释:

  1. BankAccount 类

    • balance: 存储账户余额。
    • BankAccount(int initialBalance): 构造函数,初始化账户余额。
    • getBalance(): 返回账户余额。
    • income(String in, String out): 处理存款和支出,并进行余额计算,如果输入不合法,则抛出异常。
    • parseValue(String input): 解析输入字符串,将字母替换成对应的 ASCII 码值。
  2. TestBankAccount 类

    • main(String[] args): 测试方法,创建 BankAccount 对象,并调用 income 方法进行余额计算,测试不同输入情况。

总结:

本示例展示了如何使用 Java 代码实现银行账户余额计算,并处理柜员误操作输入字母的情况。代码会将字母替换成对应的 ASCII 码值,并进行余额计算。同时,代码还包含异常处理机制,确保账户余额始终为非负值。

Java 银行账户余额计算:处理错误输入和异常

原文地址: https://www.cveoy.top/t/topic/nWa6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录