我有一个控制台应用程序,它等待用户输入1到4之间的一个数字。根据选择,一个case语句将打印出相应的控制台语句,或者转到其他方法。当我启动程序并输入数字时,什么也没有返回,程序结束。
如果用户选择数字1,我想打印出一行文本,然后执行名为NewEntry的程序。似乎甚至没有启动该程序。
class Program
{
static void Main(string[] args)
{
//initial Prompt
Console.WriteLine("***Welcome to the Asset Directory***");
Console.WriteLine("Please Select an Option");
Console.WriteLine("1. New Entry");
Console.WriteLine("2. Edit Entry");
Console.WriteLine("3. Look Up");
Console.WriteLine("4. Print Master List");
int userInput;
userInput = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(userInput);
switch (userInput)
{
case '1':
Console.WriteLine("1. New Entry");
NewEntry();
break;
case '2':
Console.WriteLine("2. Edit Entry");
break;
case '3':
Console.WriteLine("Look Up");
break;
case '4':
Console.WriteLine("4. Print Master List");
break;
default:
Console.WriteLine("Invalid Selection");
break;
}
}
static void NewEntry ()
{
Console.WriteLine("Enter the DSCADA Asset Information");
Test_RTU = new DSCADA_RTU();
Test_RTU.StationName = Console.ReadLine();
Test_RTU.RTUmake = Console.ReadLine();
Test_RTU.RTUtype = Console.ReadLine();
Test_RTU.CommunicationType = Console.ReadLine();
Test_RTU.DateInService = Console.ReadLine();
}
}
class Test_RTU
{
public string EDiv { get; set; } //division that owns the asset
public string StationName { get; set; } // name of station RTU is located
public string RTUmake {get; set;}
public string RTUtype { get; set; }
public string CommunicationType { get; set; }
public string DateInService { get; set; }
}
答案 0 :(得分:3)
您的开关盒应如下所示:
case 1:
...
case 2:
...
case 3:
...
case 4:
...
不是这个:
case '1':
...
case '2':
...
case '3':
...
case '4':
...
userInput
是int
,因此大小写也应为int
。您正在使用的文字(例如'1'
)是char
文字。恰好发生了从char
到int
的隐式转换,将'1'
转换为整数49
,'2'
转换为整数50
等等。由于这种隐式转换,您的代码可以通过编译,但无法按预期工作。