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

Java中如何改写并简化井字棋胜负判断的if-else阶梯代码?

Java中if-else阶梯的替代实现及井字棋获胜判断代码优化

if-else阶梯的常见替代方式

  • 合并逻辑条件:将所有判断条件用逻辑或(||)直接连接,一步返回结果,大幅减少代码行数。
  • 提取复用逻辑:把重复的“检查连续三个位置是否为0”的逻辑抽成独立方法,降低代码冗余。
  • 预定义获胜模式:用数组存储所有获胜的坐标组合,通过遍历数组逐一验证,后续修改规则只需调整模式数组,扩展性更强。

优化后的井字棋获胜判断代码

嵌套if风格(匹配你提供的示例格式)

if (token[0][0] == 0) {
    if (token[0][1] == 0 && token[0][2] == 0) return true;
    if (token[1][0] == 0 && token[2][0] == 0) return true;
    if (token[1][1] == 0 && token[2][2] == 0) return true;
}
if (token[0][2] == 0 && token[1][1] == 0 && token[2][0] == 0) return true;
if (token[1][1] == 0) {
    if (token[0][1] == 0 && token[2][1] == 0) return true;
    if (token[1][0] == 0 && token[1][2] == 0) return true;
}
if (token[2][0] == 0 && token[2][1] == 0 && token[2][2] == 0) return true;
if (token[0][2] == 0 && token[1][2] == 0 && token[2][2] == 0) return true;
return false;

单行/5行内极简版本

return (token[0][0]==0&&token[0][1]==0&&token[0][2]==0) ||
       (token[1][0]==0&&token[1][1]==0&&token[1][2]==0) ||
       (token[2][0]==0&&token[2][1]==0&&token[2][2]==0) ||
       (token[0][0]==0&&token[1][0]==0&&token[2][0]==0) ||
       (token[0][1]==0&&token[1][1]==0&&token[2][1]==0) ||
       (token[0][2]==0&&token[1][2]==0&&token[2][2]==0) ||
       (token[0][0]==0&&token[1][1]==0&&token[2][2]==0) ||
       (token[0][2]==0&&token[1][1]==0&&token[2][0]==0);

高扩展性模式遍历版本(5行内)

int[][] winPatterns = {{0,0,0,1,0,2}, {1,0,1,1,1,2}, {2,0,2,1,2,2}, 
                       {0,0,1,0,2,0}, {0,1,1,1,2,1}, {0,2,1,2,2,2}, 
                       {0,0,1,1,2,2}, {0,2,1,1,2,0}};
for (int[] pattern : winPatterns)
    if (token[pattern[0]][pattern[1]] == 0 && token[pattern[2]][pattern[3]] == 0 && token[pattern[4]][pattern[5]] == 0)
        return true;
return false;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:10:39