2016-11-16 53 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条件下。