在c#中从控制台输入多行

时间:2014-06-21 05:41:16

标签: c# input command-line console-application

我试图从控制台读取c#中的一些值然后处理它们。但是我遇到了错误。

来自控制台的输入是:

Name:ABCD
School:Xyz
Marks:80
 //here the user enters a new line before entering new data again
Name:AB
School:Xyz
Marks:90
//new line again 
Name:AB
School:Xyz
Marks:90

等等。我事先不知道控制台输入的数量......我怎样才能检测到用户已经停止输入&存储输入。

我尝试使用

string line;
while((line=Console.ReadLine())!=null)
{
  //but here it seems to be an infinite loop 
}

任何建议

4 个答案:

答案 0 :(得分:5)

您的代码查找"控制台输入结束"这是" Ctrl + Z"正如Console.ReadLine所述:

  

如果在方法从控制台读取输入时按下Ctrl + Z字符,则该方法返回null。这使得用户可以在循环中调用ReadLine方法时阻止进一步的键盘输入。以下示例说明了此方案。

如果您要查找空字符串,请使用String.IsNullOrWhiteSpace

string line;
while(!String.IsNullOrWhiteSpace(line=Console.ReadLine()))
{
  //but here it seems to be an infinite loop 
}

答案 1 :(得分:2)

您无法隐含地知道用户已完成输入所有数据。您需要来自用户的一些明确的输入,告诉您不再有数据。

答案 2 :(得分:2)

线永远不会是null,这就是为什么它是一个无限循环。您必须检查空字符串或特定值,如字母q(退出)。我推荐你以下。

string line;
do
{
    //input code

    //Check for exit conditions
    line = Console.ReadLine();
} while (!String.IsNullOrWhiteSpace(line) || line.ToLower() != "q");

答案 3 :(得分:-1)

这更容易,不是吗  示例:我将每行的输入添加到列表

        List<int> inA = new List<int>();
        var inp = Console.ReadLine();
        while (inp != string.Empty)
        {
            inA.Add(Convert.ToInt32(inp));
            inp = Console.ReadLine();

        }
相关问题