1

我正在尝试用 Java 创建一个程序,其中每月服务费是在第 4 次取款后每次取款增加 1 美元(银行账户程序)。我尝试使用循环,但它只是卡住了。

代码:

    public void monthlyProcess() {
    int w = getWithdrawals();
    if (w > 4) {
        while(w > 4) {
            serCharge++;
        }
    }
    super.monthlyProcess();
    if(bal <= MIN_BAL) {
        status = false;
    }
}

谢谢!

4

4 回答 4

4

在这里,这应该工作。

干杯!

public void monthlyProcess() {
    int w = getWithdrawals();
    if (w > 4) {
        serCharge += w - 4;
    }
    super.monthlyProcess();
    if(bal <= MIN_BAL) {
        status = false;
    }
}
于 2012-10-30T20:09:14.197 回答
3

为什么不只是surcharge += w-4

编辑:

surcharge += Math.max(w-4,0)

于 2012-10-30T20:00:06.953 回答
3

对我来说看起来像是一个不定式循环,但总的来说我认为你完全不需要一个循环:

 public void monthlyProcess() {
    int w = getWithdrawals();
    if (w > 4) {
           while(w > 4) {
            serCharge++;
            w--;
         }

    }
    super.monthlyProcess();
    if(bal <= MIN_BAL) {
        status = false;
    }
}

应该这样做

你得到了不定式循环,因为你没有对 w 变量做任何事情,它总是大于四,所以循环永远不会中断。如果确实如此,无论如何您最终都会收取巨额服务费,因为它会因为不定式循环而不断增加

“一个程序员出去喝牛奶,他的妻子打电话给他说,‘你出去能不能拿些鸡蛋’……他再也没有回来”

于 2012-10-30T20:00:33.423 回答
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;
    }
}
于 2012-10-30T20:04:28.630 回答