2016-03-10 3 views
0

Im использует twitter4j 3.0.3, обработку 2 и el capitan. Я продолжаю получать ошибки при попытке запустить этот код! В частности: unexpected token: int на линии return (int) statuses.stream()Ошибка «неожиданного токена: int» в программе twitter4j

Я хочу, чтобы данные хэштегом, чтобы изменить цвет фона в тени цвета между красным и зеленым, в зависимости от количества #good и #bad твитов. Мне нравится думать об этом как о спектре + 100/-100. каждый # хороший твит +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(); 
} 
+0

Как вы отредактируете этот код? Вы используете редактор обработки или используете IDE, например eclipse? Я также не вижу никаких импортных заявлений. Пожалуйста, опубликуйте [mcve], который показывает, что вы на самом деле работаете. –

+0

Im редактирование с помощью редактора обработки. Я добавил редактирование вопроса, чтобы он был более ясным, надеюсь. –

ответ

1

У вас есть пара вещей, которые неправильно:

Во-первых, обработка не поддерживает Java 8 синтаксис. Это Java 8 Синтаксис:

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

Вы должны реорганизовать это использовать основной цикл, который в коде я дал вам в другом вопросе. На самом деле у вас уже есть функция, которая использует это, поэтому я не знаю, почему вы добавили эту функцию Java 8. Опять же, вы никогда не объявляете переменную tweets, которую вы используете в этой функции.

Во-вторых, Обработка никогда не вызывает метод main(). Вам нужно избавиться от этого метода и перенести любой его код на функцию, которая фактически называется, например, функция setup().

В-третьих, У вас нет заявлений на импорт. Я предполагаю, что вы просто опустили их со своего поста, но не заставляйте нас угадывать. В будущем попробуйте опубликовать MCVE, который показывает, что именно вы используете.

+0

Еще раз спасибо за быстрый ответ. Это все мой код, который у меня там есть. Я ничего не пропускал для этого сообщения. Насколько я могу заставить этот код работать? Я собираюсь отказаться от класса, потому что я так расстроен, пытаясь заставить это работать ... Причина, по которой у меня есть синтаксис Java 8, заключается в том, что я пытался изменить жестко закодированные строки, чтобы вытащить данные из твиттера вместо , –

+0

@ zack.gray.ou Вы очень близки. Пожалуйста, не сдавайтесь. Я упомянул операторы импорта, потому что я не думаю, что ваш код будет компилироваться без них. В принципе, вам нужно сообщить Processing, где можно найти такие классы, как 'ConfigurationBuilder' и' Status', поскольку они находятся в библиотеке Twitter4J. Вы делаете это, импортируя эти классы. –

Смежные вопросы