我一直在尝试将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();
}
}
}
答案 0 :(得分:5)
我认为您首先需要了解一个开关。该开关应用于变量,在这种情况下为“ME”。此外,开关盒不能有“范围”条目,只能“精确”。所以你的代码看起来像:
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)
应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();