2

我正在尝试查找用户输入的推文中唯一主题标签的数量。例如,如果有人输入“#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;
}
}
4

3 回答 3

0

我不想为你做作业,但我会提供一些建议:

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

  2. 与其在HashSet内部创建一个新的getHashtags(),不如在内部(循环外部)创建一个main(),然后将其传入。

于 2013-10-07T18:36:56.973 回答
0

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

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

2.传递推文字符串数组而不是传递推文字符串

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;
于 2013-10-07T18:45:36.503 回答
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());

}

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

于 2013-10-07T18:46:34.087 回答