【问题标题】:"unexpected token: int" error on twitter4j programtwitter4j 程序上的“意外令牌:int”错误
【发布时间】:2016-06-25 22:25:10
【问题描述】:

我正在使用 twitter4j 3.0.3、处理 2 和 el capitan。尝试运行此代码时,我不断收到错误消息!特别是:unexpected token: int上线return (int) statuses.stream()

我希望该主题标签数据将背景颜色修改为介于红色和绿色之间的颜色,具体取决于#good 和 #bad 推文的数量。我喜欢将其视为 +100/-100 频谱。每条#good 推文都是 +1,每条 #bad 都是 -1。如果是 -100 条推文,则椭圆是全红色的。如果是 +100 条推文,则背景为全绿色。

ConfigurationBuilder cb = new ConfigurationBuilder();
Twitter twitterInstance;
Query queryForTwitter;

//ArrayList tweets;

void setup() {
  cb.setOAuthConsumerKey("xxxx");
  cb.setOAuthConsumerSecret("xxxx");
  cb.setOAuthAccessToken("xxxx");
  cb.setOAuthAccessTokenSecret("xxxx");
  cb.setUseSSL(true);

  size(640,440);

} //setup

//ArrayList<String> tweets = new ArrayList<String>();

public static void main (String args[]) throws TwitterException {
    Twitter twitter = new TwitterFactory().getInstance();
    List<Status> statuses = twitter.getUserTimeline("google");
    String hashtag = "#AlphaGo";
    System.out.println("The Twitter page contains " 
                        + countTweets(hashtag, statuses) 
                        + " tweets with the hashtag : " + hashtag);

}

public static int countTweets(String hashtag, List<Status> statuses){
    return (int) statuses.stream()
                         .filter(x -> x.getText().contains(hashtag))
                         .count();
}

//create a function that counts the tweets
//that contain a certain hashtag
int countTweets(String hashtag){
  int total = 0;
  for(String tweet : tweets){
    if(tweet.contains(hashtag)){
      total++;
    }
  }
  return total;
}

void draw(){

  //count the good and bad tweets
  int goodTweets = countTweets("#good");
  int badTweets = countTweets("#bad");

  //calculate color based on tweet counts
  float r = badTweets/100.0 * 255;
  float g = goodTweets/100.0 * 255;
  float b = 0;

  background(r, g, b);

}

这里的代码有问题:

public static void main (String args[]) throws TwitterException {
    Twitter twitter = new TwitterFactory().getInstance();
    List<Status> statuses = twitter.getUserTimeline("google");
    String hashtag = "#AlphaGo";
    System.out.println("The Twitter page contains " 
                        + countTweets(hashtag, statuses) 
                        + " tweets with the hashtag : " + hashtag);

}

public static int countTweets(String hashtag, List<Status> statuses){
    return (int) statuses.stream()
                         .filter(x -> x.getText().contains(hashtag))
                         .count();
}

【问题讨论】:

  • 你是如何编辑这段代码的?您使用的是 Processing 编辑器,还是使用 Eclipse 之类的 IDE?我也没有看到任何导入语句。请张贴minimal reproducible example,显示您实际运行的内容。
  • 我正在使用处理编辑器进行编辑。我对问题添加了一个编辑,希望它更清楚。

标签: java twitter arraylist processing twitter4j


【解决方案1】:

你有几件事错了:

首先,处理不支持 Java 8 语法。这是 Java 8 语法:

statuses.stream().filter(x -> x.getText().contains(hashtag)).count();

您必须对其进行重构以使用基本的 for 循环,该循环位于我在您的另一个问题中给您的代码中。实际上你已经有一个使用它的函数,所以我不知道你为什么要添加这个 Java 8 函数。再说一次,您永远不会声明您在该函数中使用的 tweets 变量。

其次,Processing 永远不会调用 main() 方法。您必须摆脱该方法并将其任何代码移动到实际调用的函数中,例如 setup() 函数。

第三,您没有任何导入语句。我假设您只是在帖子中省略了它们,但不要让我们猜测。将来,请尝试发布MCVE,以准确显示您正在运行的内容。

【讨论】:

  • 再次感谢您的快速回复。这就是我在那里的所有代码。我没有为这篇文章省略任何内容。我离让这段代码正常工作还有多远?我即将放弃并放弃课程,因为我很沮丧试图让它工作......我拥有 Java 8 语法的原因是因为我试图更改硬编码字符串以从 twitter 中提取数据。
  • @zack.gray.ou 你非常接近。请不要放弃。我提到了 import 语句,因为我认为没有它们您的代码将无法编译。基本上,您需要告诉 Processing 在哪里可以找到像 ConfigurationBuilderStatus 这样的类,因为它们在 Twitter4J 库中。您可以通过导入这些类来做到这一点。
猜你喜欢
  • 1970-01-01
  • 2011-12-20
  • 2015-11-19
  • 2018-08-27
  • 2014-12-07
  • 2016-08-10
  • 2013-02-11
  • 2013-10-26
  • 1970-01-01
相关资源
最近更新 更多