Console.Read()上的整数输出错误

时间:2015-08-17 12:09:10

标签: c# visual-studio

我正在尝试输出一个我作为用户输入的变量,但是输错了数字。

到目前为止,这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace sequence
{
    class Program
    {
        static void Main(string[] args)
        {
            int userInput = Console.Read();

            Console.WriteLine("User input is: {0}", userInput.GetType());
            Console.WriteLine("User input is: {0}", userInput);
        }
    }
}

输出:

3
User input type is: System.Int32
User input is: 51
Press any key to continue

如果我输入4,我会得到52. 5,53等等。

2 个答案:

答案 0 :(得分:4)

使用返回字符串的Console.ReadLine(),您需要转换为int

试试这个

namespace sequence
{
    class Program
    {
        static void Main(string[] args)
        {
            var input = Console.ReadLine();
            int userInput;
            if (!int.TryParse(input, out userInput))
            {
                Console.WriteLine("You have entered invalid number");
            }
            else
            {
                Console.WriteLine("User input is: {0}", userInput.GetType());
                Console.WriteLine("User input is: {0}", userInput);
            }
            Console.WriteLine("Press any key to exit");
            Console.ReadKey();                
        }
    }
}

答案 1 :(得分:0)

那是因为Console.Read()返回正在读取的字符的整数代码。您必须从char中减去48以获得实际数字。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace sequence
{
    class Program
    {
        static void Main(string[] args)
        {
            int userInput = Console.Read();

            Console.WriteLine("User input is: {0}", userInput.GetType());
            Console.WriteLine("User input is: {0}", userInput - 48);
        }
    }
}