簡體   English   中英

我的BufferedReader字符輸入循環程序永遠運行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM