2016-02-04 83 views
-1

我必須使用字符串讀取器類通過字符讀取字符串字符。我寫了這樣的代碼:如何在Java中使用StringReader類讀取字符串?

String string = "Hello, World!"; 
StringReader stringReader = new StringReader(string); 

while(stringReader.ready()) 
{ 
    System.out.println(stringReader.read()); 
} 

但是循環並沒有以字符串的末尾結束,它是無限的!爲什麼?

我想也這樣做:

while(stringReader.read()!=-1) 
{ 
    System.out.println(stringReader.read()); 
} 

循環不infite ...但它跳出一些字符...怎麼可以讀取所有的字符串?

回答

0

試試這個:

String str = "Hello, World!"; 

    //Create StringReader instance 
    StringReader reader = new StringReader(str); 
    int c = reader.read(); 
    while (c != -1){ 
     //Converting to character 
     System.out.print((char)c); 
     c = reader.read(); 
    } 
    //Closing the file io 
    reader.close(); 
0

ready method告訴你read下一個呼叫是否不會阻止。

返回: 如果下一個read()保證不會阻塞輸入,則返回true,否則返回false。

一旦你到達字符串的末尾,它肯定不會阻塞;你已經到達了字符串的末尾。用String,內容已經存在;一個StringReader應該總是返回trueready

當您在每個循環撥打read兩次時,您正在跳過字符 - 一次處於while狀態,一次處於正文中。改爲將其分配給一個變量。

int c; 
while((c = stringReader.read()) != -1) 
{ 
    System.out.println((char) c); 
} 

你也可以做你通常做任何其他種類的Reader - 它包裝在一個BufferedReader,所以你可以調用nextLine或在Scanner包裹。

BufferedReader bf = new BufferedReader(stringReader); 

Scanner strScanner = new Scanner(stringReader); 
相關問題