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不是零 –