如何修复C#中If语句的按键输入判断异常问题?
C#控制台按键输入判断问题解决方法
你的代码有两个关键问题导致输入E/A时会执行Else分支:
Console.ReadKey()的返回值处理错误
Console.ReadKey()返回的是ConsoleKeyInfo对象,直接转字符串得到的不是单个输入字符(比如输入E会得到类似"E, KeyE"的内容),自然和"E"/"A"匹配不上。正确做法是取该对象的KeyChar属性,这才是用户输入的实际字符。条件判断结构错误
你写了两个独立的if语句,当输入E时,第一个if会执行,但第二个if不满足,会直接进入它的else分支输出Error。应该把第二个if改成else if,让条件判断形成连贯的分支,只有前面的条件都不满足时才会执行最后的else。
修正后的代码如下:
// 获取用户输入的单个字符 var input = Console.ReadKey().KeyChar.ToString(); if (input == "E") { Console.WriteLine("English has been selected"); } else if (input == "A") { Console.WriteLine("تم اختيار اللغة العربية"); } else { Console.WriteLine("Error!"); }
也可以直接用char类型判断,更简洁:
char input = Console.ReadKey().KeyChar; if (input == 'E') { Console.WriteLine("English has been selected"); } else if (input == 'A') { Console.WriteLine("تم اختيار اللغة العربية"); } else { Console.WriteLine("Error!"); }
内容的提问来源于stack exchange,提问作者Mr incognito
相关产品推荐
相关产品推荐

