我正在尝试用Java创建一个程序,其中每次提取后的每月服务费将增加1美元(银行帐户计划)。我试图使用一个循环,但它只是卡住了。
代码:
public void monthlyProcess() {
int w = getWithdrawals();
if (w > 4) {
while(w > 4) {
serCharge++;
}
}
super.monthlyProcess();
if(bal <= MIN_BAL) {
status = false;
}
}
谢谢!
答案 0 :(得分:4)
在这里,这应该有用。
干杯!
public void monthlyProcess() {
int w = getWithdrawals();
if (w > 4) {
serCharge += w - 4;
}
super.monthlyProcess();
if(bal <= MIN_BAL) {
status = false;
}
}
答案 1 :(得分:3)
为什么不只是surcharge += w-4
?
编辑:
surcharge += Math.max(w-4,0)
答案 2 :(得分:3)
对我来说看起来像是一个不定式的循环,但总的来说我认为你不需要完全循环:
public void monthlyProcess() {
int w = getWithdrawals();
if (w > 4) {
while(w > 4) {
serCharge++;
w--;
}
}
super.monthlyProcess();
if(bal <= MIN_BAL) {
status = false;
}
}
应该这样做
你得到了不定式循环,因为你对w变量一无所知它总是大于4,所以循环永远不会破坏。如果确实如此,你最终会收取大量服务费,因为它会因为不定式循环而继续增加
“程序员正在吃点牛奶,他的妻子打电话给他说,'你可以拿出一些鸡蛋'......永远不会返回“
答案 3 :(得分:1)
到目前为止,其他答案正确地指出你完全摆脱while
循环,但为了完整起见,这里有一个解决方案可以保持循环:
public void monthlyProcess() {
int w = getWithdrawals();
if (w > 4) {
while(w > 4) {
serCharge++;
// make sure you update the value of w,
// otherwise you'll be stuck in an infinite loop!
w--;
}
}
super.monthlyProcess();
if(bal <= MIN_BAL) {
status = false;
}
}