2013-10-07 88 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()); 

}

所以循环和+=应该做的伎俩。