[英]Why is'nt my program finding the solution to Peg Solitaire and keeps running forever?
[英]my BufferedReader character input loop program keeps running forever
我編寫了一個程序,該程序將用戶寫到控制台的句子(或單詞)的字符打印出來。 我以為程序會在我輸入第一個輸入后結束。 但是它沒有這樣做,即使在打印了第一句話之后,仍然繼續輸入並打印它。 您能解釋一下為什么會這樣嗎? 我是新來的。 這是程序:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
/*
* This program prints out the characters written in the console
* line by line.
*/
public class ReaderProgram {
public static void main(String args[]) throws IOException{
char c;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
do{
//reads character and stores it in c
c = (char) br.read();
//prints out c
System.out.println(c);
}while(c != -1);
//'while' checks if c is -1 (-1 means end of the stream)
}
}
輸出如下所示(輸入到控制台顯示這樣的):
史詩
Ë
p
一世
C
夢想
d
[R
Ë
一種
米
您將br.read()
的結果br.read()
為時過早。
br.read()
返回一個int
,其存儲容量大於char
。 char
既沒有符號,也沒有足夠大的值來存儲-1
和完整的UTF-16值范圍。
通過將結果轉換為char
並將其與-1
比較,可以有效地將-1轉換為Character.MAX_VALUE
。 永遠不能等於-1
。
考慮以下代碼:
public static void main( String[] args ) {
char v = (char) -1;
System.out.println( "v = " + (int) v );
}
它將打印65535
,而不是-1
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.