[英]Taking input in Java
如果有人可以幫助我,我會感到困惑。 試圖在網絡上搜索它,但沒有得到滿意的答案。
為什么不像在輸出中那樣簡單地使用System.in.somemethod()
來獲取Java中的輸入呢? 像使用System.out.println()
一樣,為什么不按原樣使用System.in
? 為什么輸入過程很漫長?
System.in
(一個InputStream
)提供的唯一方法是read
的重載。 當然,您可以執行以下操作:
byte[] bytes = new byte[5];
System.in.read(bytes);
System.out.println(Arrays.toString(bytes));
從控制台讀取五個字節。 但這具有以下缺點:
IOException
。 (未在上面的代碼段中顯示) 這就是為什么人們使用Scanner
來將System.in
流包裝到更用戶友好的內容中的原因。
從命令行獲取輸入總是比僅輸出數據更為棘手。 這是因為沒有辦法知道輸入在語義上正確,結構正確甚至在語法上正確。
如果您只想從System.in
讀取字節 ,那么輸入的許多不確定性就會消失。 在那種情況下,只需要考慮兩件事:I / O錯誤和輸入結束System.out
也都存在這兩種情況。 唯一可能棘手的問題是InputStream
可能不會返回在一次read
調用中請求的所有字節。
因此,從System.in
讀取數據並不困難; 解釋數據(通常歸結為解析數據或驗證數據)是困難的部分。 這就是為什么經常使用Scanner
類來理解輸入的原因。
就像您不能以相同的方式使用System.out.somemethod()
而不是System.out.println()
一樣,也不能使用System.in.somemethod()
而不是System.in.read()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.