复杂的循环帮助。 Java的

时间:2013-08-03 01:47:45

标签: java loops crash

这个程序是一个简单的纸牌游戏,我挂在一个复杂的循环上。这张“火”卡需要检查其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;

2 个答案:

答案 0 :(得分:1)

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

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

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

 if ((newBoard.getSlotA2() == "fire") | (newBoard.getSlotA2() == "wind"))

答案 1 :(得分:0)

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

    while((x && y) && (!end)){