java - For if loop wont loop:任何指向为什么会这样的指针?
问题描述
这应该循环24 次;它没有,我很困惑为什么。请帮助我那里的各种克诺比斯:
private boolean simpleMove(Board bd)
{
int b = rn.nextInt(3);
for (int i = 0; i < 24; i++) {
if (bd.isVacant(i) && rul.isLegalMove(tigerLocs[b], i)) {
bd.swap(tigerLocs[b],i);
bd.setTiger(i);
tigerLocs[b] = i;
System.out.println(i);
return true;
}
else {
System.out.println(i);
}
}
System.out.println("invalid");
return false;
解决方案
正如评论指出的那样,您的循环最多将执行 24 次。但是 if 语句中的 return 语句可能会导致它“提前”返回。
它看起来像是某种棋盘游戏。棋盘似乎有 24 个“方格”,它做出了第一个合法移动并返回真。如果它未能找到合法的移动,则返回 false。
我无法确认整体逻辑,但这个理由似乎很合理:
如果有可用的移动,请接受并返回true
。如果没有可用的移动,则不移动并返回false
。
推荐阅读
- mysql - 如何选择最新记录
- javascript - Vuetify 自定义时间选择器组件不更新模型并给出错误
- unity3d - 导出卡通着色器 Maya
- functional-programming - 在对象嵌套数组中查找对象的路径
- python - 使用 libav* 将每帧的时间戳编码和解码到 mp4
- sql - 从另一个表插入数据 - Oracle SQL
- javascript - 如何将html表单中的值转换为ajax
- android - 应用程序包。为什么布局扩展在 Android 6.0.1 的设备上崩溃?
- sql - 如何使用不同的标题旋转我的表格?
- reactjs - React Redux 中的错误:未处理的拒绝(错误):操作必须是普通对象