我试图从控制台读取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
}
任何建议
答案 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();
}