首页 > 解决方案 > 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;

标签: java

解决方案


正如评论指出的那样,您的循环最多将执行 24 次。但是 if 语句中的 return 语句可能会导致它“提前”返回。

它看起来像是某种棋盘游戏。棋盘似乎有 24 个“方格”,它做出了第一个合法移动并返回真。如果它未能找到合法的移动,则返回 false。

我无法确认整体逻辑,但这个理由似乎很合理:

如果有可用的移动,请接受并返回true。如果没有可用的移动,则不移动并返回false


推荐阅读