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

Java抛硬币实验问题:循环搭配方法调用无法正常返回值

问题原因

你当前代码逻辑和需求不匹配,问题出在flipForHeads方法的循环终止条件:现有代码是抛够goal次就直接返回,但需求要求的是累计凑够goal次正面才停止抛硬币。
另外注意单Java文件不允许存在两个public类,要么把两个类拆分到GVCoin.java、TossingCoins.java两个独立文件,要么删掉GVCoin的public修饰符。

修复方案

修改flipForHeads方法的逻辑,将循环判断条件改为判断累计正面数是否达到目标:

public int flipForHeads(GVCoin coin, int goal) {
    // 边界校验,避免传入非正数导致逻辑异常
    if (goal <= 0) {
        return 0;
    }
    int totalFlips = 0;
    // 只要当前正面数没到目标就继续抛
    while (coin.numHeads() < goal) {
        coin.flip();
        totalFlips++;
    }
    return totalFlips;
}

如果要保留do-while写法,调整判断条件即可:

public int flipForHeads(GVCoin coin, int goal) {
    if (goal <= 0) {
        return 0;
    }
    int totalFlips = 0;
    do {
        coin.flip();
        totalFlips++;
    } while (coin.numHeads() < goal);
    return totalFlips;
}

运行结果

使用你提供的种子15、目标100个正面运行修复后代码,输出结果为:

Total number of flips for 100 heads: 209

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:54:06