2015-02-05 328 views
0

创建一个C#程序来提示用户从问题的答案选项列表中选择正确的答案,如果答案错误,则尝试再次提示相同的问题循环,但它不工作,因为它假设是。C#中char和int之间的区别#

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代替炭在该方案,并用1,2,3和4,然后该工作方案细取代的a,b,c和d。请有人可以解释这个代码在使用char时出了什么问题。

+4

当你使用char时会发生什么?你会得到错误?如果是这样,错误是什么? – Sefa 2015-02-05 20:54:46

+0

@ adv12他的代码似乎是正确的。 a,b,c和d不是命令,它们是对命令含义的猜测。阅读被问到的问题的文本。 – Servy 2015-02-05 20:58:55

+0

@Servy,是我掠过。谢谢。 – adv12 2015-02-05 20:59:36

回答

0

如果你想阅读单个字符,你应该使用Console.ReadKey

Console.Read等待来自控制台的输入,这意味着读取大多数shell中的整行内容,然后将该输入的第一个字符的ASCII值作为int给出。

如果只是用ReadKey你可以得到一个实际char代表按下的下一个字符,而不必担心如何你进入一个char转换。

+0

它不让我使用char UserChoice = Console.Readkey();如错误所述 - >不能将类型System.Consolekeyinfo隐式转换为char。 – jay 2015-02-05 21:24:22

+0

我已经使用了ConsolekeyInfo UserChoice = Console.ReadKey();然后使用UserChoice.keyChar来使用代码中的任何地方。 – jay 2015-02-05 21:26:02

+0

@jay是的,这是正确的。 – Servy 2015-02-05 21:26:58

相关问题