Java 银行系统:处理无效输入和字母转换
Java 银行系统:处理无效输入和字母转换
本文介绍一个 Java 银行系统,该系统可以处理柜员的存钱和支出操作。柜员通过调用 income(String in, String out) 方法向银行系统中录入存钱(即 in)和支出(即 out)的情况。
系统需要满足以下要求:
- 存钱必须表示为正值,支出必须表示为负值。
- 每次
income()调用完毕后,账户里的余额必须为非负值。 - 由于柜员的误操作可能输入一些字母,系统需要自动将字母替换成对应的 ASCII 码值。
以下是可能的解决方案:
public class BankSystem {
private int balance;
public BankSystem() {
balance = 0;
}
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 += inValue - outValue;
}
private int parseValue(String value) {
int result = 0;
for (char c : value.toCharArray()) {
if (Character.isDigit(c)) {
result = result * 10 + (c - '0');
} else {
result = result * 100 + c;
}
}
return result;
}
}
在该实现中,income() 方法首先将输入的字符串转换为表示存款和支出的整数值。如果任何一个值无效(即存款为负值,支出为正值或余额不足),则抛出异常。否则,将存款值加上并减去支出值,以更新余额。
为了处理字母,parseValue() 方法将字符串中的数字字符转换为整数值,并将非数字字符转换为对应的 ASCII 码值。例如,字符串 '3A32' 将被转换为整数值 36532。
原文地址: https://www.cveoy.top/t/topic/nWbu 著作权归作者所有。请勿转载和采集!