0
A
回答
1
int
值不为空。你必须使用负面的。
while((x = Console.Read()) != -1)
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
我想这有点矫枉过正,LOL。 – Andrew
+0
@Andrew它是通用的,因为使用TextReader可以初始化文件和控制台。这是懒惰的,没有像Split方法那样的开销。此外,我不是真正了解源问题,然后我试图添加完全答案。 –
相关问题
- 1. copy_n或直到eof?
- 2. 直到EOF,但执行每行到\ n
- 3. 红宝石扫描/得到直到EOF
- 4. Console.Read()和到Console.ReadLine()出现FormatException
- 5. 从标准输入读取,直到EOF
- 6. 从文件中读取直到EOF
- 7. C# - 循环输入直到EOF
- 8. Console.Read被忽略
- 9. Console.Read()和Console.ReadLine()问题
- 10. C#:Console.Read()没有得到“右”输入
- 11. 读取文本文件并跳过空行直到到达EOF
- 12. 访问:移动到下一个记录,直到EOF
- 13. C fgets()得到输入,直到EOF,而不是输入两次
- 14. 从C++文件读取并发送到套接字直到eof
- 15. Console.Read在C#中的失败
- 16. Console.Read()无法正常工作
- 17. 如何使用EOF循环直到达到EOF迭代在文件中每个学生
- 18. 输入用户输入,直到输入<<EOF>>
- 19. 读取整个stdin,直到C中的EOF为止
- 20. 如何在Lisp中读取输入直到EOF
- 21. 从输入读取字符串直到EOF
- 22. 从文件读取和写入文件直到EOF在linux下
- 23. Python:如何从标准输入读取字节块直到EOF?
- 24. 如何recv直到theres没有更多的recv没有eof?
- 25. 如何读取直到EOF可以从cin在C++
- 26. 如何重复这个小程序直到EOF
- 27. 做直到EOF循环与记录在VB 2010
- 28. 拆分scanf函数输入数组,直到EOF
- 29. 读取文件直到遇到“EOF”。我怎么能抓住这个?
- 30. 从文件中取出输入,直到在java中找到EOF为止
你可以在技术上使用'int?',它是可以为空的。 – Greg
但直到eof才被读取为零 –
@Greg'Console.Read()'返回一个'int' @KingstonJoshua更正。返回的值是-1不是零 –