0

このプログラムは単純なカード ゲームであり、1 つの複雑なループに悩まされています。この「火」カードは、隣接する 2 つのゲームボード スロットをチェックして、別のカードによって占められているかどうかを確認する必要があります。このループでは、1 回成功するか、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

0

while の代わりに for ループを使用して、無限ループを防ぐことができます。また、end を true に設定しても、必ずしもループが終了するとは限りません。これは、x と y がまだ true である可能性があるためです。より良い条件は次のとおりです。

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