繁体   English   中英

复杂的循环帮助。 爪哇

[英]Complex loop help. Java

这个程序是一个简单的纸牌游戏,我陷入了一个复杂的循环。 此“射击”卡需要检查其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;

尝试使用&&代替||

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

而且也许您应该使用|| 代替| 在以下代码中:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM