Hashtag Multiple

时间:2013-10-07 17:48:24

标签: java loops unique

我试图找到用户输入的推文中唯一标签的数量。例如,如果有人输入“#one #seven #one purple green #red”,它将显示3个唯一的标签,即“#one,#seven,#red”。在我的代码中,我可以做到一条推文,但我无法弄清楚如何输入多个推文并从中找到所有唯一的主题标签。

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

3 个答案:

答案 0 :(得分:0)

我不想为你做功课,但我会提出一些建议:

  1. main()中,您需要一个循环,要求输入并进行调用 到getHashtags()

  2. 而不是在HashSet内创建新的getHashtags(),     在main()中创建一个(在循环外部),并将其传入。

答案 1 :(得分:0)

1.loop并获得许多推文输入

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

2.通过tweetstring数组而不是传递tweet字符串

3.逐行浏览推文数组,并且当且仅当尚未添加时才添加标记

    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;

答案 2 :(得分: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());

}

所以循环和+=应该可以解决问题。