эта проблема вызывает бесконечную петлю в следующем фрагменте кода:java.io.StringReader.read() (Java-8) возвращает неожиданный символ в конце строки
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;
}
}
, если вызывается со следующими параметрами : источника = «мусор» nTags = 2
Используя отладчик, я понял, что после того, как строка была полностью итерации, метод чтения() возвращает символ «\ uFFFF» 65535 навсегда. Так почему мой вопрос?
Спасибо!
Операция 'return' в блоке' finally' - это [плохая идея] (http://stackoverflow.com/questions/48088/returning-from-a-finally-block-in-java). – Jesper
Почему вместо этого вы не используете 'String.charAt()'? –
Почему String.charAt лучше? –