0

If Elseステートメントを切り替えようとしていますが、定数が必要であるというエラーが表示されます。

これが私が取り組んできたコードです:

using System;

namespace ConsoleApplication6

{
    class Program
    {
        static void Main()
        {
            String me;
            int ME = 0, YOU = 5, THEY = 20, THEM = 30;
            Console.WriteLine("Default Values: YOU = 5, THEY = 20 and THEM = 30\nValue for \"ME\" >>");
            me = Console.ReadLine();
            ME = Int16.Parse(me);

            switch(true) {
                case (ME > 0 && ME < 12) :  
                 YOU = ME;
                 Console.WriteLine("Value of YOU is {0}", YOU);
                 break;

                case ( ME == 15):
                YOU = THEY * THEM;
                Console.WriteLine("Value of YOU is {0}", YOU);
                break;

                case (ME == 20):
                YOU++;
                Console.WriteLine("Value of YOU is {0}", YOU);
                break;

                case (ME == 17):
                YOU = YOU - 4;
                Console.WriteLine("Value of YOU is {0}", YOU);
                break;

                default:
                Console.WriteLine("You've entered {0}", ME);
                Console.WriteLine("Value of YOU is {0}", YOU);
                break;


           }
            Console.WriteLine("Press Enter to EXIT");
            Console.ReadLine();

        }

    }
}

これが私が変換しようとしているものです:

using System;

namespace ConsoleApplication5
{
    class Program
    {
        static void Main()
        {
            String me;
            int ME = 0, YOU = 5, THEY = 20, THEM = 30;
            Console.WriteLine("Default Values: YOU = 5, THEY = 20 and THEM = 30\nValue for \"ME\" >>");
            me = Console.ReadLine();
            ME = Int16.Parse(me);

            if (0 < ME && ME < 12)
            {
                YOU = ME;
                Console.WriteLine("Value of YOU is {0}", YOU);
            }
            else if( ME == 15)
            {
                YOU = THEY * THEM;
                Console.WriteLine("Value of YOU is {0}", YOU);
            }

            else if (ME == 20)
            {
                YOU++;
                Console.WriteLine("Value of YOU is {0}", YOU);
            }

            else if (ME == 17)
            {
                YOU = YOU - 4;
                Console.WriteLine("Value of YOU is {0}", YOU);
            }

            else
            {
                Console.WriteLine("You've entered {0}", ME);
                Console.WriteLine("Value of YOU is {0}", YOU);

            }
            Console.WriteLine("Press Enter to EXIT");
            Console.ReadLine();

        }

    }
}
4

1 に答える 1

5

最初にスイッチを理解する必要があると思います。このスイッチは、変数 (この場合は「ME」) に適用されます。また、switch-case には「range」エントリを含めることはできず、「exact」のみを含めることができます。したがって、コードは次のようになります。

String me;
int ME = 0, YOU = 5, THEY = 20, THEM = 30;
Console.WriteLine("Default Values: YOU = 5, THEY = 20 and THEM = 30\nValue for \"ME\" >>");
me = Console.ReadLine();
ME = Int16.Parse(me);

if ((0 > ME) && (ME < 12))
{
    YOU = ME;
    Console.WriteLine("Value of YOU is {0}", YOU);
}
else 
{
    switch (ME)
    {
        case 15:
            YOU = THEY * THEM;
            break;
        case 20:
            YOU++;
            break;
        case 17:
            YOU = YOU - 4;
            break;
        default:        
            break;
    }

    Console.WriteLine("You've entered {0}", ME);
    Console.WriteLine("Value of YOU is {0}", YOU);
}
Console.WriteLine("Press Enter to EXIT");
Console.ReadLine();

また、コピー ペースト エラーが発生しました: if (0 < ME && ME < 12)should if (0 > ME && ME < 12).

スイッチのみのソリューションを使用するには、フォール トラフ ケースを使用できます。しかし、これは醜く、コードを読みにくくしていると思います。

String me;
int ME = 0, YOU = 5, THEY = 20, THEM = 30;
Console.WriteLine("Default Values: YOU = 5, THEY = 20 and THEM = 30\nValue for \"ME\" >>");
me = Console.ReadLine();
ME = Int16.Parse(me);

switch (ME)
{
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
    case 11:
        YOU = ME;
        break;          
    case 15:
        YOU = THEY * THEM;
        break;
    case 20:
        YOU++;
        break;
    case 17:
        YOU = YOU - 4;
        break;
    default:        
        break;
}

Console.WriteLine("You've entered {0}", ME);
Console.WriteLine("Value of YOU is {0}", YOU);

Console.WriteLine("Press Enter to EXIT");
Console.ReadLine();
于 2012-07-05T09:30:14.703 に答える