ToInt32投掷奇怪的结果

时间:2017-03-24 05:14:51

标签: c#

好吧,我一直对记忆游戏的代码有疑问。这就像一个西蒙说的但是在C#中有数字。

问题来自于,在代码中,我使用控制台Readkey让玩家进行输入。但是,当我将数字转换为int时问题就出现了...它就像我放置了一个与数据类型不匹配的值。为什么会发生这种情况=

     public void playersTurn() {
        for (int i = 0; i < 6; i++) {
            if (!(failure)){
                playerInput = Console.ReadKey().Key.ToString(); // if i put, for example, 5
                Console.Write(playerInput); // it throws 5D50 (this was just to see if something weird was happening)
                try{
                    playerNumber = Convert.ToInt32(playerInput);
                }
                catch(FormatException e){
                    Console.Clear();
                    Console.WriteLine("Solo numeros, chico"); // there is always an exception
                }
                Console.Write(playerNumber + " ");
                if (playerNumber != thoseNumbers[i]) {
                    Console.WriteLine(" ");
                    Console.WriteLine("¡ERROR!");
                    failure = true;
                }
            }
            thoseNumbers[i] = 0;
        }

1 个答案:

答案 0 :(得分:0)

convert方法抛出异常,因为它需要一个数字。如果你传递一个像5D50这样的字符串,它将不知道如何处理&#39; D&#39;所以它会抛出异常。

Readkey()返回key的代码,而不是key用于的值。试试这个:

Convert.ToInt32(到Console.ReadLine());