【问题标题】:Hashtag Multiple多个标签
【发布时间】:2013-10-07 17:48:24
【问题描述】:

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

【问题讨论】:

    标签: java loops unique


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      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;
      

      【讨论】:

      • 传递推文字符串数组是什么意思?
      • 你正在传递一条推文,而不是传递大量推文。下面的帖子可能会对你有所帮助:stackoverflow.com/questions/11535017/…
      • 你仍然会使用相同的 Set hashtags = getHashtags(tweet);但请注意,您现在正在传递整个推文数组,我想说的是吗
      【解决方案3】:

      你需要一个循环来收集多个输入。

      我会将您的输入收集到一个字符串中,以便使用您已经定义的 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());
      

      }

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

      【讨论】:

        猜你喜欢
        • 2011-06-08
        • 2017-12-06
        • 2017-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多