2

ユーザーが入力したツイートで一意のハッシュタグの数を見つけようとしています。たとえば、誰かが「#one #seven #one Purple green #red」と入力すると、「#one、#seven、#red」という 3 つの一意のハッシュタグが表示されます。私のコードでは、1 つのツイートに対してそれを行うことができますが、複数のツイートを入力して、それらからすべての固有のハッシュタグを見つける方法がわかりません。

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

複数の入力を収集するには、メインにループが必要です。

既に定義されている getHashtags を操作するために、入力を 1 つの文字列にまとめます。

このようなもの...

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());

}

したがって、ループと a+=でうまくいくはずです。

于 2013-10-07T18:46:34.087 に答える
0

1.ループして、次のような多くのツイート入力を取得します

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

2.つぶやき文字列を渡す代わりに、つぶやき文字列配列を渡す

3.ツイート配列を1行ずつループし、まだ追加されていない場合にのみタグを追加します

    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 に答える