ReadLine()方法不接受该行。有解决方案吗

时间:2017-12-23 11:30:57

标签: c# console.readline

ReadLine()方法不接受字符串,并且在不读取输出的字符串的情况下执行程序。

using System;

namespace ReadReadLineMethod
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            //using read method
            Console.WriteLine("Write a character: ");
            char a=(char)Console.Read();
            Console.WriteLine(a);
            //using readline method
            Console.WriteLine("Enter a line: ");
            string s=Console.ReadLine();
            Console.WriteLine(s);
        }
    }
}

Output

1 个答案:

答案 0 :(得分:6)

您的问题是由Read调用引起的,该调用只读取标准输入流中的一个字符,但是当您键入字母'a'后跟Enter键时,您将在输入中插入3个字符:字母' a',回车和换行。这两个最后一个字符不会被Read从输入流中删除,并且在您调用ReadLine时仍然存在。当然,这会导致ReadLine立即退出而无需返回任何内容。

您可以将对Read的调用更改为另一个ReadLine以删除enter键插入的CR / LF,如果需要单个char,则可以从返回的字符串中提取它

Console.WriteLine("Write a character: ");
string input = Console.ReadLine();
// Decide what default you want
char a = input.Length > 0 ? input[0] : ' ';
Console.WriteLine(a);