【问题标题】:C# How to stop while loop when enter pressedC#如何在按下输入时停止while循环
【发布时间】:2019-12-01 08:53:16
【问题描述】:

我有一个作业,我必须编写一个程序,在循环中询问数字十次,最后给出这十个数字的总和。 但也必须可以在按下回车时停止循环并给出数字的总和。

我在 while 循环中尝试过类似的方法,但也没有用:

if( Console.KeyAvailable && Console.ReadKey( true ).Key == ConsoleKey.Enter ) 中断;

谁能提出解决方案?

提前致谢!

           {
            int i = 0;
            int number;
            string number_s;
            int sum = 0;


            while (i < 10)
            {
                { 
                i++;

                Console.WriteLine("Enter number:"); 
                number_s = Console.ReadLine(); 
                Int32.TryParse(number_s, out number);

                    sum += number;
                }
            }
           Console.Write("Sum is: {0}", sum);
          }

【问题讨论】:

  • 当你按下 Enter 你的 number_s 将被设置为一个空字符串 (string.Empty) 现在你只需要检查它并使用 break i> 关键字退出循环
  • if(string.IsNullOrWhiteSpace(number_s)) break;
  • 只是为了解释您的尝试失败的原因:ReadLine 被阻止。它会等到缓冲区中有东西和 Enter 。 KeyAvailableReadKey 是非阻塞的。因此,他们将遇到空缓冲区:在您输入数字之前或在ReadLine 清空缓冲区之后。
  • 当用户输入“Lilian”或“Banana”而不是数字时,你想做什么?

标签: c# while-loop


【解决方案1】:

下面的代码应该可以正常工作。

while (i < 10)
{
    i++;
    Console.WriteLine("Enter number:"); 
    number_s = Console.ReadLine(); 
    if(string.IsNullOrEmpty(number_s))
        break;
    input = Convert.ToInt32(number_s);
    sum += input;
}
Console.WriteLine("The sum of the entered numbers are : {0}", sum);

【讨论】:

  • 如果用户输入“Harikrishnan”而不是数字,之前的数字将被再次添加。这是期望的行为吗?我认为不是...
  • @ZoharPeled Convert.ToInt 在这种情况下会抛出异常。所以你的行为不会发生。
  • @Holger 是的,没错。我想我误读了答案(问题使用了int.TryParse,所以我认为答案也使用了它)。
【解决方案2】:

当您按 Entery 键时,number_s 中的值将为空。 你只需要使用

if(string.IsNullOrEmpty(number_s))
 break;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-19
    • 2020-06-01
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 2021-09-28
    • 2017-05-23
    • 1970-01-01
    相关资源
    最近更新 更多