[英]How to read a line in BufferedInputStream?
我正在編寫一個代碼來使用BufferedInputStream來讀取用戶的輸入,但是當BufferedInputStream讀取字節時,我的程序只讀取第一個字節並打印它。 有沒有什么方法可以讀取/存儲/打印整個輸入(這將是整數)除了只讀取第一個字節?
import java.util.*;
import java.io.*;
class EnormousInputTest{
public static void main(String[] args)throws IOException {
BufferedInputStream bf = new BufferedInputStream(System.in) ;
try{
char c = (char)bf.read();
System.out.println(c);
}
finally{
bf.close();
}
}
}
輸出:
[shadow @ localhost codechef] $ java EnormousInputTest 5452 5
BufferedInputStream
用於讀取字節 。 閱讀一行涉及閱讀字符 。
您需要一種方法將輸入字節轉換為由字符集定義的字符 。 因此,您應該使用Reader
將字節轉換為字符,並從中讀取字符。 BufferedReader
還有一個readLine()
方法,它讀取整行,使用:
BufferedInputStream bf = new BufferedInputStream(System.in)
BufferedReader r = new BufferedReader(
new InputStreamReader(bf, StandardCharsets.UTF_8));
String line = r.readLine();
System.out.println(line);
你可以在while循環中運行它。
試試下面的代碼
BufferedInputStream bf = new BufferedInputStream(System.in) ;
try{
int i;
while((i = bf.read()) != -1) {
char c = (char) i;
System.out.println(c);
}
}
finally{
bf.close();
}
}
但請記住,此解決方案效率低於使用BufferedReader
因為InputStream.read()
會為每個字符讀取系統調用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.