-2

我最近在学习 C#,但遇到了一个问题。

public static void PlayGame(Kion Player1,Kion Player2)
    {
        bool Win = false;
        Console.WriteLine ("Let us begin then");
        Console.WriteLine ("Press Enter to roll the dice ");
        Console.ReadLine ();
        Console.WriteLine ();
        Console.WriteLine ();
        Random Dice = new Random();
        while (Win == false)
        {
            int DiceResult = Dice.Next (1,6);

            switch(DiceResult)   ***control cannot fall-through from one case label to another error message here***
            {
            case 1:
            case 4:
                Console.WriteLine ("The attribute being played is Strength");
                if ((Player1.Pride == "Kan") & (Player2.Pride == "Kan"))
                    Console.WriteLine ("You are both proud Kans, you match in combat and do not lose health");
                else
                    Console.WriteLine ("Those who belong to the 'Kan' pride unleashes their claws");
                    if (Player1.Pride == "Kan")
                {
                    Player2.LoseHealth();
                    int PlayerNumber = 2;
                    LoseHealthText(PlayerNumber, Player2);
                }
                    else
                    if (Player2.Pride == "Kan")
                {
                    Player1.LoseHealth ();
                    int PlayerNumber = 1;
                    LoseHealthText(PlayerNumber, Player1);
                }
                    else 
                    Console.WriteLine ("None belong to the Kan, you will all hide this turn");
                break;

            case 3:
            case 6:
                Console.WriteLine ("hello");
            }
        }
    }

上面的代码无法执行,因为编译器在语句control cannot fall-through from case label to another所在的行报错。switch(DiceResult)

有人可以帮助我确定我的错误在哪里吗?

4

2 回答 2

0
case 3:
case 6:
    Console.WriteLine ("hello");

这里你需要一个break;声明,像这样:

case 3:
case 6:
    Console.WriteLine ("hello");
    break;

C#中,您无法创建case没有break;,return;throw语句的选项。请参考 MSDN| 了解更多信息。

于 2014-06-06T22:26:35.353 回答
0

试着休息一下

Console.WriteLine ("The attribute being played is Strength");

所以你有了:

 switch(DiceResult) // **control cannot fall through case on this line**
            {
            case 1:
            case 4:
                Console.WriteLine ("The attribute being played is Strength");
            break;
            }
于 2014-06-04T13:46:32.680 回答