ConsoleKeyInfo CKI = Console.ReadKey(true);

CKI.KeyChar是等效于字符输入的unicode
因此,如果在控制台提示符下按“1”,则CKI.KeyChar将为49,而不是值“1”。

如何获得值“1”?

我知道这是一种获取输入的曲折方式,但是它是我的老师想要的方式,因此我无法做到这一点。

编辑:我需要用户提供的值,因为我将不得不检查其值是否小于9

最佳答案

使用 .KeyChar 属性并与 Char.IsNumber 比较。

要获得等效的数值,可以使用 Int32.Parse Int32.TryParse :

Int32 number;
if (Int32.TryParse(cki.KeyChar.ToString(), out number))
{
  Console.WriteLine("Number: {0}, Less than 9?: {1}", number, number < 9);
}

测试应用:
using System;

namespace Test
{
    public static void Main()
{
    Console.WriteLine("Press CTRL+C to exit, otherwise press any key.");
    ConsoleKeyInfo cki;
    do
    {
        cki = Console.ReadKey(true);
        if (!Char.IsNumber(cki.KeyChar))
        {
            Console.WriteLine("Non-numeric input");
        }
        else
        {
            Int32 number;
            if (Int32.TryParse(cki.KeyChar.ToString(), out number))
            {
                Console.WriteLine("Number received: {0}; <9? {1}", number, number < 9);
            }
            else
            {
                Console.WriteLine("Unable to parse input");
            }
        }
    }
    while (cki.KeyChar != 27);
}
}

关于c# - C#检查ConsoleKeyInfo.KeyChar是否为数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12644473/

10-12 16:06