You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何实现仅打印while循环执行后的最后一个值

问题原因

当前代码将打印语句System.out.println(PizzaQty);写在while循环的执行块内,每轮循环不论是否找到符合要求的披萨数量,都会触发打印,因此会输出循环过程中产生的所有中间值。
同时原代码存在计数逻辑偏差:当找到满足整除条件的PizzaQty后,代码仍会无条件执行++PizzaQty自增操作,若直接将打印语句移到循环外,会得到比正确结果大1的错误值。

修复方法

调整代码逻辑,仅在找到满足「总披萨片数可以被人数整除」条件的最终值时执行打印,同时修正自增逻辑的位置,避免计数偏差。修正后的完整代码如下:

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int PeopleQty = scanner.nextInt();
    int PiecesQty = scanner.nextInt();
    int PizzaQty = 1;
    boolean divisibleByPieces = false;
    while (!divisibleByPieces) {
        if ((PiecesQty * PizzaQty) % PeopleQty == 0) {
            divisibleByPieces = true;
            // 仅在得到最终正确结果时打印
            System.out.println(PizzaQty);
        } else {
            // 不满足条件时才自增,进入下一轮判断
            ++PizzaQty;
        }
    }
}
改动说明
  • 删除了循环内每轮都会执行的无差别打印逻辑,避免输出中间计算值
  • 将++PizzaQty自增逻辑移动到不满足条件的else分支中,避免找到正确值后仍执行自增导致结果错误
  • 打印操作仅在判断到符合整除条件的分支内执行,输出的就是最终需要的最小披萨数量

内容的提问来源于stack exchange,提问作者Roman Maslov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 01:09:33