2016-11-16 10 views
0

の終了時に予期しない文字を返し、この問題は、次のコードの抜粋で無限ループを引き起こします:私は、文字列が完全に繰り返した後、read()メソッドは、文字「\ uFFFF」永久65535を返すことに気づいたデバッガを使用 ソース=「ごみ箱」 nTags = 2java.io.StringReader.read()(ジャワ8)文字列

。だから私の質問はなぜですか?

ありがとうございます!

+1

'finally'ブロックの' return'文は[悪い考えです](http://stackoverflow.com/questions/48088/returning-from-a-finally-block-in-java)です。 – Jesper

+0

代わりに 'String.charAt()'を使わないのはなぜですか? –

+0

String.charAtはなぜ優れていますか? –

答えて

3

stringReader.read()ので、ストリームの終わりのための-1を返しているが、あなたはJavaでのみ符号なしのデータ型であるcharにキャストしています。したがって、-1の代わりに65535がストリームの終わりになるため、whileループを壊すことはありません。

while文ではなく、charの内部にというループをキャストしたい場合があります。

関連する問題