簡體   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