我必须从控制台读取整数,用白色字符直到文件结尾,但我不知道如何,我搜索答案但我找不到它。
while((x = Console.Read()) != null)
答案 0 :(得分:2)
请注意,除非您执行其中一个操作,否则该方法不会返回-1 以下行动:
- 同时按下Control修饰键和Z控制台键(Ctrl + Z),这表示文件结束条件。
- 按下指示文件结束条件的等效键,例如Windows中的F6功能键。
- 将输入流重定向到具有实际文件结束字符的源(例如文本文件)。
然后您可以逐个字符地读取并使用简单的数学计算每个分离的值。它的懒惰然后不会立即迭代文件到最后计算所有值。
static void Main(string[] args)
{
foreach (int i in Read(Console.In))
{
Console.WriteLine(i);
}
}
static IEnumerable<int> Read(TextReader rdr)
{
int ch;
bool neg = false;
int value = 0;
int count = 0;
while ((ch = rdr.Read()) != -1)
{
if (char.IsWhiteSpace(ch))
{
if (count > 0)
yield return neg ? -value : value;
count = 0;
value = 0;
neg = false;
}
else if (count == 0 && ch == '-')
{
neg = true;
}
else if (ch >= '0' && ch <= '9')
{
count++;
value = value*10 + (ch - '0');
}
else
throw new InvalidDataException();
}
if (count > 0)
yield return neg ? -value : value;
}
答案 1 :(得分:1)
int
值不可为空。你必须使用否定的。
while((x = Console.Read()) != -1)