此问题导致以下代码摘录中的无限循环:
public static final List<String> extractTags(String source, Integer nTags) {
List<String> tags = new ArrayList<>();
try (StringReader stringReader = new StringReader(source)) {
String tag = "";
char c;
while ((c = (char) stringReader.read()) >= 0 && tags.size() < nTags) {
switch (c) {
case '<':
tag = "";
break;
case '>':
tags.add(tag);
break;
default:
tag = tag + c;
break;
}
}
} catch (IOException e) {
} finally {
return tags;
}
}
如果使用以下参数调用:source = "trash" nTags = 2
使用调试器,我意识到字符串完全迭代后, read() 方法永远返回 char '\uFFFF' 65535。所以我的问题是为什么?
谢谢!