为啥答案和我想的不一样

小明要做一个跑步训练。
初始时,小明充满体力,体力值计为 10000。如果小明跑步,每分钟损耗
600 的体力。如果小明休息,每分钟增加 300 的体力。体力的损耗和增加都是均匀变化的。
小明打算跑一分钟、休息一分钟、再跑一分钟、再休息一分钟……如此循环。
如果某个时刻小明的体力到达 0,他就停止锻炼。
请问小明在多久后停止锻炼。为了使答案为整数,请以秒为单位输出答案。
答案3880,问题请看代码注释


//跑步训练
//3880
public class Main03 {
    public static void main(String[] args) {
        int tl = 10000;
        boolean b = true;
        int time = 0;
        while (true) {
            //体力为0
        if (tl<600&&b) {     //将判断换成tl==0不行吗?
            System.out.println(time*60+tl/10); //为什么要加tl/0
            break;
        }
        if (b) {
            tl-=600;
            b=false;
            time++;
        }else{
            tl+=300;
            b=true;
            time++;
        }
        }
    }
}

麻烦解释下,没看明白

因为体力不会刚刚好等于0,所以不使用=0去判断。
并且他那里是用的<600且b为true,也就是剩余体力不到600的时候,正好下一分钟要进行跑步。这个时候这一分钟步是跑不完的,所以又用tl/10,这里的10是没秒消耗的体力(600/60)

望采纳,点击右侧采纳即可:
程序是模拟小明跑步锻炼的情况。

初始体力值为10000,跑步每分钟消耗600体力,休息每分钟增加300体力。

while循环:当体力值小于600时,输出(当前时间 x 60 + 剩余体力值 ÷ 10)。此时跑步锻炼结束。

否则,如果此时正在跑步(b为true),就减少600体力,切换到休息状态(b为false);如果此时正在休息,就增加300体力,切换到跑步状态(b为true)。

最终的答案是3880,即小明跑步锻炼的总时间。

img

参考如下,还望采纳:
主要思路:

1、定义了一个变量 tl 表示当前体力值,初始值为 10000
2、定义了一个变量 b 表示当前是否在休息,初始值为 true,表示开始是在休息的
3、定义了一个变量 time 表示已经跑步的时间,初始值为 0
4、然后通过一个 while 循环,每次循环模拟一分钟,并更新当前体力值。
5、如果当前体力值小于 600 且正在跑步,则跳出循环,并输出当前已经跑步的总时间加上剩余的十分之一分钟。
6、如果当前正在跑步,则当前体力值减少 600,并将 b 改为 false,表示开始休息。
7、如果当前正在休息,则当前体力值增加 300,并将 b 改为 true,表示开始跑步。
8、每次循环完成后,将 time 加 1,表示已经过了一分钟。

public class Main03 {
    public static void main(String[] args) {
        // 定义人的体力,初始值为10000
        int tl = 10000; 

        // 定义一个布尔类型的变量b,表示当前是否在跑步,初始值为true
        boolean b = true; 

        // 定义记录跑步时间的变量,初始值为0
        int time = 0; 

        // 使用while循环,模拟跑步的过程
        while (true) {
            // 当体力小于600且当前在跑步时
            if (tl < 600 && b) {
                // 输出跑步结束的总时间(单位:秒)
                // 其中time * 60 表示跑步时间(以分钟为单位)转换为以秒为单位的数值
                // tl / 10 表示剩余的体力(以千卡为单位)转换为以卡为单位的数值
                System.out.println(time * 60 + tl / 10); 
                break; // 退出循环
            }

            // 当前在跑步
            if (b) {
                tl -= 600; // 体力减少600(千卡)
                b = false; // 修改当前状态为不在跑步
                time++; // 时间加1(分钟)
            } else {
                tl += 300; // 体力增加300(千卡)
                b = true; // 修改当前状态为在跑步
                time++; // 时间加1(分钟)
            }
        }
    }
}


不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^