【问题标题】:Clear console buffer between Console.ReadLine and Console.Read [duplicate]清除 Console.ReadLine 和 Console.Read 之间的控制台缓冲区 [重复]
【发布时间】:2021-09-30 08:40:51
【问题描述】:

我是 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);

        }
    }
}

可能这是我还没有掌握的非常琐碎的东西。

【问题讨论】:

  • 这能回答你的问题吗? Clear Console Buffer
  • 亲爱的 Manti_Core, 不幸的是,这个问题没有回答我的问题。另外,下面已经提到了这种方法,我已经尝试过了,但没有解决我的问题。 (我怎样才能从标题中删除[重复]?)最好,然后
  • 你在追求错误的东西来解决你当前的问题,在你的代码int number2 = Console.Read() 你只是从输入流的同一行读取,你应该做的是 Console.ReadLine() 和将其转换为 int 就像您对第一个整数所做的那样
  • 嗨 Manti_Core,您最近的回答非常有帮助!!!我能做到,非常感谢!我已将行从'int number2 = Console.Read();'到 'int number2 = int.Parse(Console.ReadLine());'如您所述,从新行读取。太感谢了。 (我怎样才能对您的评论进行投票?)

标签: c#


【解决方案1】:

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

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

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

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

如果你想清除屏幕使用:

Console.Clear()

问候

【讨论】:

  • 嗨马丁,我都试过了,但不知何故我无法取回第二个号码。这就是我得到的:写点东西! asdf 你的文字:asdf 5 你的第一个号码:5 6 你的第二个号码:54
【解决方案2】:

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

【讨论】:

  • 嗨,Amara,我试过这个,但由于某种原因,第二个数字增加了。
猜你喜欢
  • 2011-10-13
  • 2011-04-15
  • 1970-01-01
  • 2012-08-31
  • 2013-08-23
  • 2011-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多