Java 银行系统:处理错误输入和余额计算
Java 银行系统:处理错误输入和余额计算
该代码实现了一个简单的银行系统,柜员通过调用 income(String in, String out) 方法向银行系统中录入存钱(即 in)和支出(即 out)的情况。
然而,由于柜员的误操作,可能输入一些字母。因此,系统需要进行以下处理:
- 识别非法输入: 存款必须为正值,支出必须为负值。
- 处理字母输入: 将字母替换成对应的 ASCII 码值。
- 保证余额非负: 每次
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 码转换,系统能够有效地处理错误输入,确保余额的准确性。
原文地址: http://www.cveoy.top/t/topic/nWoI 著作权归作者所有。请勿转载和采集!