我试图找到用户输入的推文中唯一标签的数量。例如,如果有人输入“#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;
}
}
答案 0 :(得分:0)
我不想为你做功课,但我会提出一些建议:
在main()
中,您需要一个循环,要求输入并进行调用
到getHashtags()
。
而不是在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());
}
所以循环和+=
应该可以解决问题。