twitter4j程序中出现“意外令牌:int”错误

时间:2016-03-10 21:06:46

标签: java twitter arraylist processing twitter4j

我正在使用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();
}

1 个答案:

答案 0 :(得分:1)

你有一些错误:

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

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

你必须重构这个以使用一个基本的for循环,这是我在你的另一个问题中给你的代码。实际上你已经有一个使用它的函数,所以我不知道为什么你添加了这个Java 8函数。然后,您再也不会声明在该函数中使用的tweets变量。

其次,处理从不调用main()方法。你必须摆脱该方法并将其任何代码移动到实际调用的函数,如{{1}功能。

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