1
有人可以幫助理解下面的程序。從InputStream中捕獲的值在java中顯示不正確
import java.io.BufferedInputStream;
import java.io.IOException;
public class CmdReader {
public static void main(String []args) {
try (BufferedInputStream bis = new BufferedInputStream(System.in)) {
System.out.print("Enter age: ");
int age = bis.read();
System.out.println("Hello, you are " + age);
} catch(IOException e) {
e.printStackTrace();
}
}
}
輸出:
Enter age: 12
Hello, you are 49
不明白爲什麼49代替印刷的12
我將非常感謝您的幫助。
實際上,49是System.in讀取的第一個字節的值。它是否是ASCII(最有可能不是)取決於[編碼](http://www.iana.org/assignments/character-sets/character-sets.xhtml#table-character-sets-1)的終端或任何正在饋送System.in。但是,建議使用文本庫來閱讀文本是正確的。 –
謝謝你的投入,我想知道有沒有什麼辦法,以字節蒸汽值轉換爲char流(編碼級別像StreamEncoder),因爲是BufferedInputStream爲基於字節流和System.out的是基於字符流。因此,它通過編碼表示數據的不同之處在於,字符流使用Unicode表示法。我通過Charset API查看在Java中更改編碼,無法接聽。糾正我,如果我錯了。請建議Java內置的API。 –
對於上面的輸出,我所期待的是當我通過字節流進入1下,System.out應該打印1雖然是一款基於編碼或類似的東西字符流。 –