2013-10-07 89 views
2

我正在嘗試查找用戶輸入的推文中唯一hashtags的數量。例如,如果有人輸入「#one #seven #one purple green #red」,則會顯示3個唯一的標籤,即「#one,#seven,#red」。在我的代碼中,我可以做到這一點推文,但我不知道如何輸入多個推文,並找到他們所有的唯一標籤。Hashtag Multiple

package edu.bsu.cs121.jmgibson; 

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.HashSet; 
import java.util.Scanner; 
import java.util.Set; 

public class Tweet { 


public static void main(String[] args) { 
    Scanner scanner = new Scanner(System.in); 
    System.out.println("Please enter a tweet"); 
    String tweet = scanner.nextLine(); 
    Set<String> hashtags = getHashtags(tweet);  
    System.out.println(hashtags.toString()); 
} 

public static Set<String> getHashtags(String tweet) { 
    String[] words = tweet.split(" "); 
    Set<String> hashtags = new HashSet<String>(); 
    for (String word : words) { 
     if (word.startsWith("#")) { 
      hashtags.add(word); 
     } 
    } 
    return hashtags; 
} 
} 

回答

0

我不想做你的功課你,但我會提供一些建議:

  1. main(),你需要一個循環,要求輸入,使通話 至getHashtags()

  2. 而不是創造的getHashtags()內新HashSet的, 中創建一個main()(環外),並通過它英寸

0

1.loop並獲得不少鳴叫輸入 像

for(int i=0;i<100;i++) 
{ 
System.out.println("Please enter a tweet"); 
String tweet[i] = scanner.nextLine(); 
} 

2.pass的tweetstring陣列而不是傳遞鳴叫串

3.loop通過線陣推線當且僅當尚未添加

public static Set<String> getHashtags(String[] tweet) { 
     Set<String> hashtags = new HashSet<String>(); 
    //loop of tweet array starts  

    String[] words = tweet[i].split(" ");//i is loop variable 

     for (String word : words) { 
      if (word.startsWith("#")) { 
       //here add condition to check if hashings already doesnt have the word 
       hashtags.add(word); 
      } 
     } 

    } 

    //loop ends 

return hashtags; 
+0

通過tweetstring數組是什麼意思? –

+0

你正在傳遞單個推文,而是傳遞大量的推文。下面的文章可能會幫助你:http://stackoverflow.com/questions/11535017/passing-a-string-array-as-argument –

+0

你仍然會使用相同的設置 hashtags = getHashtags(tweet);但要知道你現在正在傳遞整個tweet數組,是我想說的 –

0

你需要在你的主循環收集多個輸入添加標籤。

我會將您的輸入收集到一個字符串中,以便與您已定義的getHashtags一起使用。

事情是這樣的......

public static void main(String[] args) { 
Scanner scanner = new Scanner(System.in); 
System.out.println("Please enter a tweet"); 

String tweet = ""; 
while(!scanner.nextLine().equals("stop")){ 
     tweet += scanner.nextLine(); 
} 
Set<String> hashtags = getHashtags(tweet);  
System.out.println(hashtags.toString()); 

}

所以循環和+=應該做的伎倆。