我正在建立一个Twitter客户端,我不想检索和显示全球趋势。到目前为止(感谢Stack Overflow的帮助)我可以检索趋势信息,从中提取必要的信息并将趋势发布到控制台。当我尝试将趋势添加到表格中时,我只能多次显示第一个趋势,而且我不确定我的行创建等在哪里出错。
一双新鲜的眼睛会受到赞赏!
由于
public static void WorldWideTrends() {
Trends WorldWideTrendsList;
try {
WorldWideTrendsList = getTrends();
UI.whatIsDisplayedList.removeAll();
UI.tweetModel = new DefaultTableModel(10, 1);
String trendsInfo = WorldWideTrendsList.toString();
System.out.println(trendsInfo);
Pattern p = Pattern.compile("(#.*?)\\'", Pattern.DOTALL);
Matcher matcher = p.matcher(trendsInfo);
while (matcher.find()) {
for (int i = 0; i < 10; i++) {
String output = matcher.group(0);
System.out.println(output);
UI.tweetModel.insertRow(1, new Object[] {});
UI.tweetModel.setValueAt(
"<html><body style='width: 400px;'><strong>"
+ output + "</strong><html><br>", i, 0);
}
}
} catch (TwitterException e) {
e.printStackTrace();
}
UI.whatIsDisplayedList.setModel(UI.tweetModel);
}
答案 0 :(得分:0)
我不确定这是什么目的:
while (matcher.find()) {
for (int i = 0; i < 10; i++) {
String output = matcher.group(0);
...
}
}
但它会处理每场比赛10次。只需再次拨打.group()
即可转到下一场比赛,您需要再次致电.find()
。
我认为你想简单地删除for循环(但如果存在超过10个匹配,这将匹配10次以上),或者可能删除while循环并执行以下操作:
// process the first 10 matches
// no while-loop!
for (int i = 0; i < 10 && matcher.find(); i++) {
String output = matcher.group(0);
...
}