在C#中,我正在输入char输入,然后输出一些内容。但是在输入控制不等待输入和直接给出输出之后

问题描述 投票:0回答:2

我有以下代码:

使用系统;

namespace MyApp {
class KeyBoardInputTest {
    static void Main() {
        Console.Write("Enter a character >\t");
        char ch = (char)Console.Read();
        Console.WriteLine("");

        if(Char.IsLetter(ch)) {
            if(Char.IsUpper(ch))
                Console.WriteLine("You have entered an upper case character");
            else
                Console.WriteLine("You have entered a lower case character");
        }
        else if(Char.IsNumber(ch))
            Console.WriteLine("You have entered a numeric character");
        else
            Console.WriteLine("You have entered a non alpha-numeric character");
        Console.Read();
    }
}
} 

在接受输入之后,如果它直接显示结果而不等我按Enter键

使用Console.ReadLine()给出错误 -

error CS0030: Cannot convert type 'string' to 'char'

使用Console.ReadKey()给出错误 -

error CS0030: Cannot convert type 'System.ConsoleKeyInfo' to 'char'
c# char console.readline console.readkey
2个回答
1
投票

例如,try-parse:

Console.Write("Enter a character >\t");
char ch;
char.TryParse(Console.ReadLine(), out ch);
Console.WriteLine();

如果用户在Enter之前输入太多字符或没有字符,您将获得空字符'\0'。或者,您可以获取TryParse的返回值,这是一个布尔值,表示解析是否成功。


0
投票

考虑转动代码以接受输入作为参数,并使用System类Convert.ToChar()将输入转换为char

using System;

namespace MyApp {

class KeyBoardInputTest {
static void Main(string [] args) {    // This line has been changed
    Console.Write("Enter a character >\t");
    char ch = Convert.ToChar(args[0])   // This line has been changed
    Console.WriteLine("");

    if(Char.IsLetter(ch)) {
        if(Char.IsUpper(ch))
            Console.WriteLine("You have entered an upper case character");
        else
            Console.WriteLine("You have entered a lower case character");
    }
    else if(Char.IsNumber(ch))
        Console.WriteLine("You have entered a numeric character");
    else
        Console.WriteLine("You have entered a non alpha-numeric character");
    Console.Read();
}
}
} 
© www.soinside.com 2019 - 2024. All rights reserved.