为什么不进入while里的if循环

有木有人可不可以解答一下我的问题😭
非常感谢!
题目:

img


错误答案:

img


结果:15.0
问题:不明白为什么不进入if循环,在cash大于50000算完之后,是不是没有更新cash的最新数据,还是原始100000代入if里,所以判断为真,不进入if循环了

基于Monster 组和GPT的调写:

  • 在你的代码中,当 cash > 50000 时,while 循环会一直运行,直到 cash 的值小于等于 50000,然后进入 if 语句中。但是,由于 if 语句被嵌套在 while 循环内部,当你进入 if 语句并减去 1000 后,程序会再次回到 while 循环的开头,继续按照 tax 的规则进行计算,而不是再次进入 if 语句。
  • 这意味着在 cash 的值小于等于 50000 时,if 语句永远不会被执行,因为 while 循环会一直运行,直到 cash 的值小于等于 50000 时才会结束。此时,你需要将 if 语句移出 while 循环,以便在 cash 的值小于等于 50000 时能够正确地执行它。
  • 另外,在 if 语句中,你应该使用一个 else if 语句,而不是一个 if 语句,因为你已经在 while 循环的开头使用了一个 if 语句。正确的代码如下:
public class Apple{
    public static void main(String[] args){ 
        double cash = 100000;
        double chance = 0; 
        double tax = 0.05; 
        while(cash > 0){
            if(cash > 50000){
                cash = cash - cash * tax; 
                chance++;
            }else if(cash >= 1000 && cash <= 50000){
                cash = cash - 1000; 
                chance++;
            }else{
                break;
            }
        }
        System.out.println(chance);
    }
}


if 语句被移出 while 循环,并且在 if 语句中使用了一个 else if 语句来避免重复执行 if 语句。当 cash 的值小于等于 0 时,while 循环会结束,程序会打印出 chance 的值,即该人可以经过的路口数。

你while循环是:

while(cash > 50000){
}

这表明一旦cash <= 50000, 那么里面的代码就不会被执行。重新定义while里的条件吧!很可能应该是cash > 0

大于50000的时候不是进入if循环吗?你看我这边的运行截图

img