在一篇较老的帖子中,我向这个问题寻求帮助:
给定一个文本文件的StringBuilder,格式为A [1,2,3,4] B [5,6,7,8] C [9,10]
我需要创建一个方法,以便在给定文本文件的名称和分别搜索的标记即“StringBuilder ex.txt”和“A”时,它将返回一个包含元素1,2,3的列表,和4.
此代码有效
static List<Double> getElements(String fileContent, String token) {
StreamTokenizer tokenizer = new StreamTokenizer(new StringReader(fileContent));
List<Double> list = new ArrayList<Double>();
while (tokenizer.nextToken() != StreamTokenizer.TT_EOF) {
if (tokenizer.sval.equals(token)) {
tokenizer.nextToken(); // '['
do {
tokenizer.nextToken(); // go to the number
list.append(tokenizer.nval);
} while (tokenizer.nextToken() == ',');
break;
}
}
return list;
}
现在我正在尝试调整代码来处理类似word1 [yzh,ppk,edf] word2 [ift,yyu,atb]
以下是我的尝试:
public List<String> getPhrases(StringBuilder fileContent, String token) {
StreamTokenizer tokenizer = new StreamTokenizer(new StringReader(fileContent.toString()));
List<String> list = new ArrayList<String>();
while (tokenizer.nextToken() != StreamTokenizer.TT_EOF) {
if (tokenizer.sval.equals(token)) {
tokenizer.nextToken(); // '['
do {
tokenizer.nextToken(); // go to the number
list.append(String.valueOf(tokenizer.nval));
} while (tokenizer.nextToken() == ',');
break;
}
}
return list;
}
问题是append方法返回类型List的未定义错误。如何纠正这种情况?
答案 0 :(得分:0)
而不是:
list.append(String.valueOf(tokenizer.nval));
我想你想要:
list.append(tokenizer.sval);
答案 1 :(得分:0)
相反,此String.valueOf(tokenizer.nval)
使用tokenizer.sval
并使用'list.add(sval)'。