0

String Reader クラスを使用して、String char を char ごとに読み取る必要があります。私はこのコードを書きました:

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());
}

ループは無限ではありません...しかし、いくつかの文字がジャンプします...どうすればすべての文字列を読み取ることができますか?

4

2 に答える 2

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();
于 2016-02-04T21:24:00.073 に答える
0

このreadyメソッドは、次の呼び出しreadがブロックされないかどうかを示します。

戻り値: 次の read() が入力に対してブロックされないことが保証されている場合は true、それ以外の場合は false。

文字列の最後に到達すると、確かにブロックされません。文字列の最後に到達しました。のString場合、コンテンツはすでに存在します。aStringReaderは常にtrueforを返す必要がありreadyます。

readループごとに 2 回 (while条件で 1 回、本文で 1回)呼び出すと、文字がスキップされます。代わりに変数に代入してください。

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

通常は他の種類のことを行うことReaderもできBufferedReaderます。nextLineScanner

BufferedReader bf = new BufferedReader(stringReader);

また

Scanner strScanner = new Scanner(stringReader);
于 2016-02-04T21:28:48.387 に答える