因此,我正在编写一个程序,该程序逐行输入一个文本,然后如果该行包含单词问题,则应该输出是或否.
该程序正在运行,但是我必须按两次Enter键才能获得输出.
我得到的第一个输入是最后一行.第二个输入是,因此while循环可以中断.
有什么建议可以改善这一状况,而无需再次输入?
using System;
using System.Collections.Generic;
namespace Tester
{
internal class Program
{
private static void Main(string[] args)
{
List<string> stringList = new List<string>();
string input = "";
while ((input = Console.ReadLine()) != string.Empty)
{
var s = input.ToLower();
stringList.Add(s.Contains("problem") ? "yes" : "no");
}
foreach (var str in stringList)
Console.WriteLine(str);
Console.ReadKey();
}
}
}
解决方法:
好吧,对于最后一个输出,您将输入一些内容.那时(input = Console.ReadLine())!= string.Empty进入,条件将通过.
循环将返回到该行并阻塞,直到您为其提供新的输入为止.然后,假设您只是键入enter,在这种情况下,循环将刚刚存在.这是预期的行为.
我不确定是什么让您为此感到不安.如果您真的想摆脱第二个回车键,也许可以在行中放入一些令牌(行/ q或其他内容),并且只要在行中找到令牌,就知道应该退出循环.
另外,您可以计算得到的输入数量,并确保得到的输入恰好是10或20.当达到该数字时,将在处理完最后一个输入后退出循环.