-2

この次のエラーが発生する理由がわかりません。

コントロールは、1 つのケース ラベル ('case "h":') から別のケース ラベルに移行できません (CS0163)

H と S のみ - 非常に奇妙です。

switch(myChoice)
{
    case "K":
    case "k":
        Console.WriteLine("You have chosen the Kanto region");
        break;
    case "O":
    case "o":
        Console.WriteLine("You have chosen the Orange Islands");
        break;
    case "J":
    case "j":
        Console.WriteLine("You have chosen the Johto region");
        break;
    case "H":
    case "h":
        Console.WriteLine("You have chosen the Hoenn region");
    case "S":
    case "s":
        Console.WriteLine("You have chosen the Sinoh region");
    case "U":
    case "u":
        Console.WriteLine("You have chosen the Unova region");
        break;
    case "R":
    case "r":
        Console.WriteLine("Return");
        break;
    default:
        Console.WriteLine("{0} is not a valid choice", myChoice);
        break;
}
4

6 に答える 6

14

フォールスルーは、case ステートメントに本体がない場合にのみ機能します。「h」と「s」のケースにはコードが存在するためbreak、それらの後に a が必要です。

さらに、提案として:の小文字と大文字の両方のバリアントをチェックする必要がないようString.ToUpper()に、パラメーターに対して a を実行できます。あなたのステートメントは次のようになります。switchmyChoiceswitch

switch(myChoice.ToUpper())
{
    case "K":
        Console.WriteLine("You have chosen the Kanto region");
        break;
    case "O":
        ...
}
于 2012-06-18T18:04:41.337 に答える
10

breaks および h ケースの後がありません

于 2012-06-18T18:04:09.580 に答える
2

break;switch ステートメントのドキュメントに - がありません。

于 2012-06-18T18:06:03.483 に答える
1

H と S の間の break ステートメントを忘れました。

于 2012-06-18T18:04:35.707 に答える
1

あなたは行方不明です

break;

声明...

case "H":
case "h":
     Console.WriteLine("You have chosen the Hoenn region");
     break;
case "S":
case "s":
     Console.WriteLine("You have chosen the Sinoh region");
break;
于 2012-06-18T18:05:28.300 に答える