2016-03-15 3 views
2

Мне сообщили, что этот код не будет работать в обработке, потому что это синтаксис java 8, который не поддерживается при обработке. Мне нужна помощь, чтобы преобразовать его в работу. Какой синтаксис может обрабатывать Обработка 2? Есть ли способ преобразовать синтаксис java 8 для работы в Processing 2?Преобразование синтаксиса Java 8 для обработки 2 (twitter4j)

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(); 
} 

Поскольку Im возникли проблемы с декларированием переменными: Текущей версия

ConfigurationBuilder cb = new ConfigurationBuilder(); 
Twitter twitterInstance; 
Query queryForTwitter; 
ArrayList<Status> tweets = new ArrayList<Status>(); 

//ArrayList tweets; 

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

    size(640,440); 

int countTweets(ArrayList<Status> statuses, String hashtag){ 
    int total = 0; 
    for(Status tweet : statuses){ 
    if(tweet.getText().contains(hashtag)){ 
     total++; 
    } 
    } 
    return total; 
} 

    int numGood = 50; 
    int numBad = 50; 
    for (int i = 0; i < numGood; i++) { 
    tweets.add("#good"); 
    } 
    for (int i = 0; i < numBad; i++) { 
    tweets.add("#bad"); 
    } 

} //setup 

//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); 

} 
+0

Если обработка может загрузить внешний файл JAR и компилировать Java 8, почему не импортировать JAR, который содержит этот код? – Makoto

+0

Вот что я сделал для библиотеки twitter4j. Я просто все еще довольно новичок в программировании. Не могли бы вы указать мне в сторону JAR, которого было бы достаточно? @Makoto –

ответ

0

В this post, я показал вам синтаксис для этого без Java 8 синтаксиса:

int countTweets(ArrayList<String> statuses, String hashtag){ 
    int total = 0; 
    for(String tweet : statuses){ 
    if(tweet.contains(hashtag)){ 
     total++; 
    } 
    } 
    return total; 
} 

Вы могли бы иметь трудности, потому что мои примеры использовали значения String вместо значений Status. Вам придется конвертировать из Status экземпляров в String значений:

int countTweets(ArrayList<Status> statuses, String hashtag){ 
    int total = 0; 
    for(Status tweet : statuses){ 
    if(tweet.getText().contains(hashtag)){ 
     total++; 
    } 
    } 
    return total; 
} 
+0

Ты серьезно мой спаситель в последние несколько недель; Я не могу это подчеркнуть. Я не могу поверить, что просто преобразовать строку в статус. Я добавил ваши изменения выше, но все же получаю ошибку int. Я предполагаю, что это из-за отсутствия объявленных переменных. Что мне нужно объявить, и я просто объявляю, что «ArrayList tweets = new ArrayList ();' Я добавляю свою текущую версию, когда мы говорим @ kevin-workman –

+0

@ zack.gray.ou Нет проблем. Возможно, вам повезет, если вы разместите отдельный вопрос для любых последующих вопросов, но похоже, что вы объявляете функцию ** внутри ** функции setup(). Это недопустимый синтаксис. В более общем плане, теперь у вас есть ** две функции 'countTweets()', вам действительно нужны они оба? Обратите внимание, что любой код, который вы здесь используете, должен использоваться в качестве ** примера **, поэтому вы не можете ожидать, чтобы просто копировать-вставить ответы и автоматически их запускать - ключ понимает, что эти ответы делают, а затем делает это с вашим собственным кодом. –

0

Вы можете использовать простой цикл и счетчик

public static int countTweets (String hashtag, List<Status> statuses) { 
    int counter = 0; 
    for (int i = 0 ; i < statuses.size() ; i++) { 
     if (statuses.get(i).getText().contains(hashtag)) counter++; 
    } 
    return counter; 
}