[英]C# switch issue with goto
事實是,它運行良好,可以運行,但是當我輸入無效字母時,程序返回兩次標簽,它兩次返回相同的選項,為什么呢? 它應該重新開始,並僅一次向我顯示選項。
namespace First_c_sharp_code
{
class Program
{
static void Main(string[] args)
{
char livro;
label:
Console.Write("\n c: for computer books \n m: for mathematical books \n h: for history books \n e: for English books");
livro = (char)Console.Read();
switch (livro)
{
case 'c':
Console.WriteLine("Aprendendo C#");
break;
case 'm':
Console.WriteLine("Somando com Pokemon");
break;
case 'h':
Console.WriteLine("Brasil dos Índios");
break;
case 'e':
Console.WriteLine("CCAA Book");
break;
default:
Console.WriteLine("\n Opção Inválida. Tente novamente");
goto label;
}
}
}
}
這是問題所在:
livro = (char)Console.Read();
問題在於Console.Read()
只需要一個字符。 但是,當您鍵入x
並按Enter鍵時,緩沖區中有兩個字符x
和\\n
(換行符)。 因此,當下一個Console.Read()
發生時,它立即返回\\n
,根據您的switch
,它也是無效的,並且您再次循環。
如果輸入xxxx
,則每個x
都會循環一次,直到輸入緩沖區再次為空。
嘗試以下方法:
livro = Console.ReadLine().FirstOrDefault();
在這里,您將讀取整行輸入(不包括\\n
),並輸入第一個字符(如果用戶只是按Enter鍵,則輸入\\0
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.