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
相关产品推荐
相关产品推荐

