0
の終了時に予期しない文字を返し、この問題は、次のコードの抜粋で無限ループを引き起こします:私は、文字列が完全に繰り返した後、read()メソッドは、文字「\ uFFFF」永久65535を返すことに気づいたデバッガを使用 ソース=「ごみ箱」 nTags = 2java.io.StringReader.read()(ジャワ8)文字列
。だから私の質問はなぜですか?
ありがとうございます!
の終了時に予期しない文字を返し、この問題は、次のコードの抜粋で無限ループを引き起こします:私は、文字列が完全に繰り返した後、read()メソッドは、文字「\ uFFFF」永久65535を返すことに気づいたデバッガを使用 ソース=「ごみ箱」 nTags = 2java.io.StringReader.read()(ジャワ8)文字列
。だから私の質問はなぜですか?
ありがとうございます!
stringReader.read()
ので、ストリームの終わりのための-1
を返しているが、あなたはJavaでのみ符号なしのデータ型であるchar
にキャストしています。したがって、-1
の代わりに65535
がストリームの終わりになるため、whileループを壊すことはありません。
while文ではなく、char
の内部にというループをキャストしたい場合があります。
'finally'ブロックの' return'文は[悪い考えです](http://stackoverflow.com/questions/48088/returning-from-a-finally-block-in-java)です。 – Jesper
代わりに 'String.charAt()'を使わないのはなぜですか? –
String.charAtはなぜ優れていますか? –