0

这个程序是一个简单的纸牌游戏,我被一个复杂的循环挂断了。这张“火”牌需要检查其相邻的 2 个游戏板插槽,看它是否被另一张牌占用,如果是,它是否是一张可以影响的牌。使用此循环,它要么需要成功运行一次,要么需要运行两次不成功。我以为我已经用下面的代码计算了它,但是当它不成功地运行循环时,程序崩溃而没有错误。让我知道你的想法,谢谢。

这段代码只是方法,主要的不包括在内。

public static void fireAction(String slotSelection)
{
    switch (slotSelection)
    {
        case "A1":
            {
                boolean x = true;
                boolean y = true;
                boolean end = false;
                while ((y == true && x == true) || (end == false))
                {   
                    int burn = roll.nextInt(2);
                    switch (burn)
                    {
                        case (0):
                            if ((newBoard.getSlotA2() == "fire") | (newBoard.getSlotA2() == "wind")){
                                newBoard.setSlotA2("BURNED");
                                end = true;}
                            else
                                x = false;
                            break;
                        case (1):
                            if ((newBoard.getSlotB1() == "fire") | (newBoard.getSlotB1() == "wind")){
                                newBoard.setSlotB1("BURNED");
                                end = true;}
                            else
                                y = false;
                            break;
                    }//end switch
                }//end while
            }//end case A1
            break;
4

2 回答 2

1

尝试使用 && 而不是 || :

    while ((y == true && x == true) && (end == false))

也许你应该使用 || 而不是 | 在以下代码中:

 if ((newBoard.getSlotA2() == "fire") | (newBoard.getSlotA2() == "wind"))
于 2013-08-03T01:55:01.947 回答
0

您可以使用 for 循环而不是 while 来防止它无限循环。此外,将 end 设置为 true 不一定会结束循环,因为 x 和 y 仍然可能为 true。更好的条件是:

    while((x && y) && (!end)){
于 2013-08-03T01:52:01.413 回答