0
此问题会导致在以下代码摘录无限循环的结尾,则返回意外的字符: source =“trash” nTags = 2java.io.StringReader.read()(爪哇8)处的String
使用调试器我意识到,在字符串完全迭代后,read()方法永远返回char'\ uFFFF'65535。所以我的问题是为什么?
谢谢!
此问题会导致在以下代码摘录无限循环的结尾,则返回意外的字符: source =“trash” nTags = 2java.io.StringReader.read()(爪哇8)处的String
使用调试器我意识到,在字符串完全迭代后,read()方法永远返回char'\ uFFFF'65535。所以我的问题是为什么?
谢谢!
因为stringReader.read()
返回-1
作为流结束,但是您将它转换为char
这是Java中唯一的无符号数据类型。所以,而不是-1
你得到65535
流结束,因此永远不会打破while循环。
您可能想要将读入的内容转换为内部的char
,而不是在while条件下。
'finally'块中的'return'语句是[坏主意](http://stackoverflow.com/questions/48088/returning-from-a-finally-block-in-java)。 – Jesper
为什么不用'String.charAt()'代替? –
为什么String.charAt更好? –