簡體   English   中英

用Java輸入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM