清除 Console.ReadLine 和 Console.Read [duplicate] 之间的控制台缓冲区

Clear console buffer between Console.ReadLine and Console.Read [duplicate]

提问人:Thend 提问时间:9/30/2021 最后编辑:James ZThend 更新时间:9/30/2021 访问量:677

问:

我是 C# 的初学者,所以请耐心等待我。:)我正在练习编写一个简单的 C# 代码来理解这种语言的工作原理。我尝试从控制台读取字符、整数和字符串,但在不同的尝试/方法之间,缓冲区永远不会清空。我想清除每个方法之间的控制台缓冲区,例如:

using System;

namespace ElsoKonzolAppom
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Write something!");
            string text1 = Console.ReadLine();
            Console.WriteLine("Your text:" + text1);

            //here, I would like to clear the buffer

            int number1 = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Your first number:" + number1);

            //here, I would like to clear the buffer

            int number2 = Console.Read();
            Console.WriteLine("Your second number:" + number2);

        }
    }
}

可能这是一件非常琐碎的事情,我还没有掌握。

c#

评论

3赞 MDT 9/30/2021
这回答了你的问题吗?清除控制台缓冲区
0赞 Thend 9/30/2021
亲爱的Manti_Core,不幸的是,这个问题没有回答我的问题。另外,下面已经提到了这种方法,我已经尝试过了,但没有解决我的问题。(如何从标题中删除 [duplicate]?最好,然后
0赞 MDT 9/30/2021
您正在追逐错误的东西来解决您当前的问题,在您的代码中,您只是从同一行输入流中读取,您应该做的是 Console.ReadLine() 并将其转换为 int,就像您对第一个整数所做的那样int number2 = Console.Read()
0赞 Thend 9/30/2021
嗨,Manti_Core,您最近的回答非常有帮助!!我能做到,非常感谢!我已将该行从'int number2 = Console.Read();'更改为'int number2 = int。Parse(Console.ReadLine());' 从新行读取,如您所提到的。非常感谢。(我怎样才能对你的评论投赞成票?

答:

1赞 Martin.Martinsson 9/30/2021 #1

据我所知,您想清除输入缓冲区吗?控制台类中没有它的方法。试试这个:

while(Console.KeyAvailable) 
    Console.ReadKey(false); // skips previous inputs

Console.ReadKey(); // reads a new char

如果不想打印跳过的字符,请使用。Console.ReadKey(true)

如果要清除屏幕,请使用:

Console.Clear()

问候

评论

0赞 Thend 9/30/2021
嗨,马丁,我已经尝试了两个,但不知何故我无法取回第二个号码。这就是我得到的:写点东西!asdf 您的文本:asdf 5 您的第一个号码:5 6 您的第二个号码:54
0赞 Amara Miloudi 9/30/2021 #2

你可以使用 Console.ReadKey(false);true = 隐藏输入

评论

0赞 Thend 9/30/2021
嗨,阿玛拉,我已经试过了,但由于某种原因,第二个数字增加了。