[英]c# Switch Case not working and says "Input String was not in a correct format"
当我使用 switch case 运行我的代码时,我试图结束这个过程。
完整代码:
int[] Slots = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
while (true)
{
Console.WriteLine("Please enter the number of the slot (1-10)");
int Slot = Convert.ToInt32(Console.ReadLine());
if (Slots[Slot - 1] == 0)
{
Slots[Slot - 1] = 1;
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Reservation Successful!");
}
else if (Slots[Slot - 1] == 1)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Slot preoccupied.");
}
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("(R)eserve another slot, (C)heck available slots or (E)nd Process?");
char choice = Convert.ToChar(Console.ReadLine());
switch (choice)
{
case 'E':
case 'e':
break;
case 'C':
case 'c':
Console.WriteLine("The available slots are:");
for (int i = 0; i < Slots.Length; i++)
{
if (Slots[i] == 0)
Console.WriteLine("{0}", i + 1);
}
continue;
case 'R':
case 'r':
continue;
default:
Console.WriteLine("Invalid Input");
break;
}
}
除了“E”案例外,一切正常。
每当我尝试使用“E”大小写时,它都不会执行 break 命令。 相反,它精确定位到该行:
int Slot = Convert.ToInt32(Console.ReadLine());
它说“输入字符串的格式不正确”,当我尝试执行系统建议的操作时,即将“int”更改为“var”。 它只是告诉我将其改回“int”。
我很困惑,我不知道那是什么意思。 我是一名学生,这还没有教给我们,所以我不知道该怎么做。
我希望它能工作,因为当我尝试运行我的代码时它没有给出任何错误,并且除了“E”情况外一切正常。
您似乎认为,switch case 中的“break”会退出 while 循环,但是 break 只会退出 switch case。
你得到的错误来自于没有退出你的 while 循环。 然后循环再次执行并读取一个无法解析为 int 的空行。 这意味着您尝试解析为 int 的输入字符串不是实际的 integer(空行不是整数)。
你应该做的是:
bool isRunning = true;
while(isRunning)
{
//your logic
switch(choice)
{
case 'E':
case 'e':
isRunning = false;
break;
}
}
开关内部的break
会导致控件仅断开开关。 因此,您需要另一个break
来跳出 while 循环。 最简单的方法是使用一个额外的 boolean 变量,该变量在“E”情况下切换。 切换后,测试是否设置了变量,如果是,则跳出循环。
将int
更改为var
并返回的建议基本上只是一种编码风格建议,没有进一步的意义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.