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

Java跳棋游戏nextTurn方法单次调用打印两次回合问题求助

问题原因

  • nextTurn方法中使用了两个独立的if判断,未做分支互斥:
    进入nextTurn时初始玩家为黑方,第一个if条件命中后,玩家会被修改为白方并打印白方回合信息;由于两个if是顺序执行的,修改后的玩家值刚好命中第二个if的判断条件,会再次触发切换逻辑、打印黑方回合信息,因此出现一次方法调用打印两次回合信息的问题。

修复方案

将nextTurn方法的第二个if改为else if,让两个分支互斥,修改后代码如下:

public void nextTurn (){
    if(this.player.equals("Black")){
        setPlayer("White");
        printTurn();
    } else if (this.player.equals("White")) {
        setPlayer("Black");
        printTurn();
    }
}
  • 额外可优化点:
    1. 无用导入import jdk.jfr.internal.test.WhiteBox;可以直接删除
    2. isValidPosistion方法名存在拼写错误,正确拼写应为isValidPosition
    3. 主方法中声明的Scanner未实际使用,可删除对应声明和导入语句

修复后逻辑验证

  1. 实例化CheckersHelper时,构造函数初始化玩家为黑方,打印It's Blacks turn
  2. 调用nextTurn时仅命中黑方分支,切换为白方后打印It's Whites turn,后续不会触发白方分支
  3. 最终输出与预期完全一致。

内容的提问来源于stack exchange,提问作者Quincy van Deursen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:06:09