Java while循环的问题

Java while循环的问题,java,Java,我现在正在做一个项目,它正在构建一个棋盘游戏的数字化版本,我遇到了一个while循环的问题,这个循环没有按照我的预期进行 基本上,如果玩家手上还有1块石头,而下一个坑不是空的,他们会捡起下一个坑的石头并继续这样做,直到下一个坑是空的 现在,我的代码继续,而下一个坑是空的,而他们手中还有一块石头,但是,如果不是空的,它不会拾取下一个坑的石头,它只会添加一块,直到下一个坑是空的 所以我的代码就快到了,只是不太清楚。因此,我正在寻找一些帮助来改进当前代码(在需要工作的代码之上有一个大注释) 如果解释不

我现在正在做一个项目,它正在构建一个棋盘游戏的数字化版本,我遇到了一个while循环的问题,这个循环没有按照我的预期进行

基本上,如果玩家手上还有1块石头,而下一个坑不是空的,他们会捡起下一个坑的石头并继续这样做,直到下一个坑是空的

现在,我的代码继续,而下一个坑是空的,他们手中还有一块石头,但是,如果不是空的,它不会拾取下一个坑的石头,它只会添加一块,直到下一个坑是空的

所以我的代码就快到了,只是不太清楚。因此,我正在寻找一些帮助来改进当前代码(在需要工作的代码之上有一个大注释)

如果解释不好,请告诉我,我会尽力重新写

干杯

while(hand == 1 && pit.next.stones != 0 && pit.next.pit == false) {
    int stones = pit.next.stones;
    for(int i = stones; i >= 1; i--) {
        hand++;
    }
    while(Hand >= 1 && pit.next.stones != 0) {
        hand--;
        addPieces(pit.next);
        pit = pit.next;
    }
} 

而不是有多个嵌套循环。你可能只需要更新手中的石头和坑里的石头,让主循环继续正常运行,因为主循环只是游戏的主逻辑循环:抓取石头,放入坑中,抓取更多的石头,然后重复?,?,获利

例如:

而不是:

while(hand >= 1 && pit.next != null) {
    // ...
    while (hand == 1 && pit.next.stones != 0 && pit.next.pit == false) {
        int stones = pit.next.stones;
        for (int i = stones; i >= 1; i--) {
            hand++;
        }
        while (hand >= 1 && pit.next.stones != 0) {
            hand--;
            addPieces(pit.next);
            pit = pit.next;
        }
    }
做一些类似于:

while(hand >= 1 && pit.next != null) {
    // ...
    if(hand == 1 && pit.next.stones > 0 && pit.next.pit == false) {
        // update stones in hand
        hand += pit.next;
        // update stones in pit
        pit.next.stones = 0;
    }
    // let main loop continue
}

(注意:我不是100%同意你的规则,只是试着按照你说的去做)

这部分
pit.next.pit==false
很奇怪。首先,这个对象不是布尔值,所以将它与布尔值进行比较很奇怪。如果它是一个布尔值,只需执行
!pit.next.pit
而不是
pit.next.pit==false
@vincrichaud它是一个布尔值,是MancalaPit的成员。但是命名可能会更好。我想你可能误解了曼卡拉的规则,我不认为当你手上还剩下一块石头的时候你应该这么做。如果你的最后一块石头落在你这边的一个空坑里,你就从相邻的坑里偷取石头,并将它们(连同你的一块)加入计分坑。@Tobb是的,我理解。然而,这是一些课程作业,我们的讲师已经“强化”了规则,因此我们不会公然复制其他曼卡拉游戏。因此,如果最后一块石头落在非空的坑上,你可以用这个坑的石头“重新开始”(将一块石头添加到下一块,以此类推),重复这整个过程直到最后一块石头落在一个空坑里?那不行。当我输入一个玩家想要使用的坑时,游戏流程停止。。。谢谢你的帮助。对不起,它确实有效,我的代码顺序错了。谢谢你,伙计。@JimmyNeedles太棒了!很高兴我能帮忙。