2016-11-16 51 views
0

此問題會導致在以下代碼摘錄無限循環的結尾,則返回意外的字符: source =「trash」 nTags = 2java.io.StringReader.read()(爪哇8)處的String

使用調試器我意識到,在字符串完全迭代後,read()方法永遠返回char'\ uFFFF'65535。所以我的問題是爲什麼?

謝謝!

+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作爲流結束,但是您將它轉換爲char這是Java中唯一的無符號數據類型。所以,而不是-1你得到65535流結束,因此永遠不會打破while循環。

您可能想要將讀入的內容轉換爲內部的char,而不是在while條件下。