我正在尝试编写BankAccount.java类,除了withdraw方法之外我几乎完成了。我留下了一些评论,解释了我对我写的代码含义的理解,但我找不到导致逻辑错误的原因。
测试程序的帐户余额= 100,帐户余额= 200 提款金额为account1 = 100,account2 = 201,因此显然100应该跟随if返回,而账户2应该跟随else返回,但事实并非如此。
public int withdraw(double amount) {
AccountBalance = this.AccountBalance - amount; // Setting AccountBalance to what it would be when the withdraw amount is subtracted
if (0 < AccountBalance) // testing if 0 is less than AccountBalance
return (int)AccountBalance; // if so then i return the new positive balance
else
return (int)AccountBalance + (int)amount; //if less then 0 i return to what the balance was before withdraw was subtracted because i can't have a negative balance
}
这是我在CMD中收到的以下输出:
F:\>java BankDemo
The balance of account1 is: 100.0
The balance of account2 is: 200.0
account1 information: John Smith
AccountNumber: 12345
Balance: 0.0
account2 information: John Calipari
AccountNumber: 54321
Balance: -1.0
以上两个账号是一样的吗?假
最后虽然我有可能是这个错误不是在这个方法和整个班级的不同方法。我不相信这是因为我有三重检查,但如果这似乎有可能反馈会很好,因为我会把焦点从这个方法变成我班上的其他人。
答案 0 :(得分:1)
您的问题是if (0 > AccountBalance)
如果AccountBalance
为负,则为真;如果为正,则为{0}。不是相反。
答案 1 :(得分:1)
如果我了解您的其他代码,那么无论如何我都会AccountBalance = this.AccountBalance - amount
。这总是会改变余额。当您将值重新添加到实际设置AccountBalance
变量的金额时。所以在你要添加的else块中添加:
AccountBalance = (int)AccountBalance + (int)amount;
确保为AccountBalance选择正确的类型,因此变量通常按照惯例从小写字母accountBalance
开始,因此如果其较低的情况下它可能会更容易阅读,但这不会影响实际结果
答案 2 :(得分:0)
你的方法错误结帐这个。
public int withdraw(double amount) {
AccountBalance = this.AccountBalance - amount;
if (0 > AccountBalance) { // testing if 0 is greater than Account balance
return (int)AccountBalance + (int)amount;
} else{
return (int)AccountBalance;
}
}
答案 3 :(得分:0)
如果负余额为无效状态,则不应修改该成员并检查后缀。
if (AccountBalance >= amount) {
AccountBalance -= amount;
}
return AccountBalance;
(缺少类型转换以显示清晰的代码)
我认为你的测试显示了成员状态(toString()?)而不是方法的返回值。