2017-04-14 32 views
2
public class Test{ 
    public static void main(String [] args){ 

     BufferedReader reader = new BufferedReader(new 
     InputStreamReader(System.in)); 
     System.out.println("Enter number?"); 
     int num = br.read(); 
     System.out.println("You entered " + num); 
    } 
} 

如果我給97作爲輸入,那麼它給出57作爲輸出。爲什麼?我的意思是讀取方法返回int然後爲什麼它返回另一個東西?假設如果我們用(char)reader.read()替換br.read(),並且如果我們輸入爲97,那麼輸出保持不變或不是我的意思是將97轉換成'a'的字符。我的概念很清楚。我很疑惑int是以ascii還是unicode形式表示的。BufferedReader的read()方法如何工作?

回答

1

BufferedReaderread()方法讀取單個字符僅,因此它被實際打印數9的Unicode值(取第一位數從97),如下所示:

char c = '9'; 
int num = c; //reader.read(); 

輸出: 57

爲了解決這個問題,你可以使用readLine()讀取輸入的一行,並將其轉換爲int如下:

int num = Integer.parseInt(reader.readLine()); 
0

您正在使用read方法,該方法只讀取單個字符,然後返回ascii或unicode值。因此,當你輸入97時,它只是將其作爲字符9讀取,然後打印其ascii值爲57

請參閱https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#read() oracle doc,以獲得更多的read方法信息。

除此之外的BufferedReaderreadLine方法,你可以使用自帶的選項scanner類對象讀取的int,long,字符串等下面的示例顯示瞭如何讀取整數。

Scanner scanner = new Scanner(System.in); 
     int a = scanner.nextInt(); 
     System.out.println("a"+a); 
0

read()返回一個字符。字符串 「9」 int值是57.

如果輸入97和輸出97。

int num = Integer.valueOf(reader.readLine()); // num is 97 

如果輸入97和輸出A.

int num = Integer.valueOf(reader.readLine()); // num is 97 
char ch = Character.valueOf((char)num); // ch is A