Java 银行系统:处理错误输入和余额计算

该代码实现了一个简单的银行系统,柜员通过调用 income(String in, String out) 方法向银行系统中录入存钱(即 in)和支出(即 out)的情况。

然而,由于柜员的误操作,可能输入一些字母。因此,系统需要进行以下处理:

  1. 识别非法输入: 存款必须为正值,支出必须为负值。
  2. 处理字母输入: 将字母替换成对应的 ASCII 码值。
  3. 保证余额非负: 每次 income() 调用完毕后,账户里的余额必须为非负值。

代码实现:

public class BankSystem {
    private int balance;

    public BankSystem() {
        balance = 0;
    }

    public void income(String in, String out) throws Exception {
        int inValue = parseInput(in);
        int outValue = parseInput(out);

        if (inValue < 0) {
            throw new Exception('Invalid input: in value must be positive.');
        }

        if (outValue > 0) {
            throw new Exception('Invalid input: out value must be negative.');
        }

        int newBalance = balance + inValue + outValue;

        if (newBalance < 0) {
            throw new Exception('Invalid input: resulting balance would be negative.');
        }

        balance = newBalance;
    }

    private int parseInput(String input) {
        int value;
        try {
            value = Integer.parseInt(input);
        } catch (NumberFormatException e) {
            value = input.hashCode();
        }
        return value;
    }

    public int getBalance() {
        return balance;
    }
}

使用示例:

public class BankSystemTest {
    public static void main(String[] args) {
        BankSystem bank = new BankSystem();
        try {
            bank.income('200', '-100');
            bank.income('3A32', '-342');
            bank.income('9B5H', '-FC34');
            bank.income('-300', '500');
        } catch (Exception e) {
            System.out.println('Error: ' + e.getMessage());
        }
        System.out.println('Balance: ' + bank.getBalance());
    }
}

运行结果:

Error: Invalid input: out value must be negative.
Balance: 0

由于第二条记录中的 out 值不是负数,因此抛出异常。最终余额为 0。

代码解释:

  • income() 方法:该方法首先调用 parseInput() 方法解析输入,如果解析出的 in 值小于 0 或 out 值大于 0,则抛出异常。然后计算新的余额,如果新的余额小于 0,则抛出异常。最后更新余额。
  • parseInput() 方法:该方法首先尝试将输入解析为整数,如果解析失败,则将输入转换为对应的 ASCII 码值。
  • getBalance() 方法:该方法返回当前余额。

总结:

该代码展示了一个简单的 Java 银行系统,该系统能够识别非法输入并进行余额计算。通过使用异常处理和 ASCII 码转换,系统能够有效地处理错误输入,确保余额的准确性。

Java 银行系统:处理错误输入和余额计算

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

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