创建一个C#程序,提示用户从问题的答案选项列表中选择正确的答案,如果答案是错的,那么尝试使用do while循环再次提示相同的问题,但它不能正常工作应该是。
class Program
{
static void Main(string[] args)
{
char UserChoice = ' ';
do
{
Console.WriteLine("What is the command keyword to exit a loop in C#?");
Console.WriteLine("a.quit");
Console.WriteLine("b.continue");
Console.WriteLine("c.break");
Console.WriteLine("d.exit");
UserChoice = ' ';
Console.WriteLine("Please enter a b c or d");
UserChoice = (char)Console.Read();
switch (UserChoice)
{
case 'a': Console.WriteLine("wrong ans"); break;
case 'b': Console.WriteLine("wrong ans"); break;
case 'd': Console.WriteLine("wrong ans"); break;
case 'c': Console.WriteLine("right"); break;
default: Console.WriteLine("Bad choice {0}", UserChoice); break;
}
} while (UserChoice == 'a' || UserChoice == 'b' || UserChoice == 'd');
}
}
但是如果我在这个程序中使用int而不是char并用1,2,3和4替换a,b,c和d那么这个程序工作正常。请一些人在使用char时解释这段代码有什么问题。
答案 0 :(得分:0)
如果您想阅读单个字符,则应使用Console.ReadKey
。
Console.Read
等待来自控制台的输入,这意味着在大多数shell中读取整行,然后将该输入的第一个字符的ASCII值作为int
。
如果您只是使用ReadKey
,则可以获得代表下一个字符的实际char
,并且不必担心如何将您获得的内容转换为{{1} }。