空壳儿 2023-04-23 18:16 采纳率: 100%
浏览 19
已结题

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

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

img


错误答案:

img


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

  • 写回答

3条回答 默认 最新

  • 社区专家-Monster-XH 2023-04-23 18:21
    关注

    基于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 的值,即该人可以经过的路口数。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月1日
  • 已采纳回答 4月23日
  • 创建了问题 4月23日

悬赏问题

  • ¥15 vue3+element-plus页面崩溃
  • ¥15 像这种代码要怎么跑起来?
  • ¥15 怎么改成循环输入删除(语言-c语言)
  • ¥15 安卓C读取/dev/fastpipe屏幕像素数据
  • ¥15 pyqt5tools安装失败
  • ¥15 mmdetection
  • ¥15 nginx代理报502的错误
  • ¥100 当AWR1843发送完设置的固定帧后,如何使其再发送第一次的帧
  • ¥15 图示五个参数的模型校正是用什么方法做出来的。如何建立其他模型
  • ¥100 描述一下元器件的基本功能,pcba板的基本原理