2016-04-12 99 views
0

我有一個程序,它從twitter獲取包含特定單詞的推文,並搜索每條推文以計算與該主題相關的另一個單詞的出現次數(例如,在這種情況下,主要單詞是卡梅隆,它正在尋找稅收和巴拿馬。)我有它的工作,所以它是指向特定的推文,但我似乎無法計算出如何獲得所有事件的累計計數。我已經在增加一個變量的時候出現了這個詞,但似乎並不奏效。代碼如下,我明顯的理由取出了我的twitter API密鑰。字符串中的子字符串的總體數量java

public class TwitterWordCount { 

    public static void main(String[] args) { 
     ConfigurationBuilder configBuilder = new ConfigurationBuilder(); 
     configBuilder.setOAuthConsumerKey(XXXXXXXXXXXXXXXXXX); 
     configBuilder.setOAuthConsumerSecret(XXXXXXXXXXXXXXXXXX); 
     configBuilder.setOAuthAccessToken(XXXXXXXXXXXXXXXXXX); 
     configBuilder.setOAuthAccessTokenSecret(XXXXXXXXXXXXXXXXXX); 

     //create instance of twitter for searching etc. 
     TwitterFactory tf = new TwitterFactory(configBuilder.build()); 
     Twitter twitter = tf.getInstance(); 

     //build query 
     Query query = new Query("cameron"); 

     //number of results pulled each time 
     query.setCount(100); 

     //set the language of the tweets that we want 
     query.setLang("en"); 

     //Execute the query 
     QueryResult result; 
     try { 
      result = twitter.search(query); 

      //Get the results 
      List<Status> tweets = result.getTweets(); 

      //Print out the information 
      for (Status tweet : tweets) { 
       //get information about the tweet 
       String userName = tweet.getUser().getName(); 
       long userId = tweet.getUser().getId(); 
       Date creationDate = tweet.getCreatedAt(); 
       String tweetText = tweet.getText(); 

       //print out the information 
       System.out.println(); 
       System.out.println("Tweeted by " + userName + "(" + userId + ") on date " + creationDate); 
       System.out.println("Tweet: " + tweetText); 
       // System.out.println(); 
       String s = tweetText; 
       Pattern pattern = Pattern.compile("\\w+"); 
       Matcher matcher = pattern.matcher(s); 
       while (matcher.find()) { 
        System.out.print(matcher.group() + " "); 

       } 

       String str = s; 
       String findStr = "tax"; 
       int lastIndex = 0; 
       int count = 0; 
       //int countall = 0; 

       while (lastIndex != -1) { 
        lastIndex = str.indexOf(findStr, lastIndex); 

        if (lastIndex != -1) { 
         count++; 
         lastIndex += findStr.length(); 
         //countall++; 
        } 
       } 

       System.out.println(); 
       System.out.println(findStr + " = " + count); 

       String two = tweetText; 

       String str2 = two; 
       String findStr2 = "panama"; 
       int lastIndex2 = 0; 
       int count2 = 0; 

       while (lastIndex2 != -1) { 
        lastIndex2 = str2.indexOf(findStr2, lastIndex2); 

        if (lastIndex2 != -1) { 
         count++; 
         lastIndex2 += findStr.length(); 
        } 

        System.out.println(findStr2 + " = " + count2); 
       } 
      } 
     } 
     catch (TwitterException ex) { 
      ex.printStackTrace(); 
     } 
    } 
} 

我也知道,這絕對不是最乾淨的程序,它的工作正在進行中!

+0

那麼你遇到的問題是什麼? – Maljam

+0

@Maljam問題是,我不能得到一個計數器,累計字數累計總計 –

+0

正確,但是什麼是'int count'顯示? – Maljam

回答

1

您必須在for循環外定義您的計數變量。

int countKeyword1 = 0; 
int countKeyword2 = 0; 

for (Status tweet : tweets) { 

    //increase count variables in you while loops 

} 

System.out.Println("Keyword1 occurrences : " + countKeyword1); 
System.out.Println("Keyword2 occurrences : " + countKeyword2); 
System.out.Println("All occurrences : " + (countKeyword1 + countKeyword2));