2013-10-07 4 views
2

Я пытаюсь найти количество уникальных хэштегов в твиттере, введенном пользователем. например, если кто-то вводит «#one #seven #one purple green #red», он будет показывать 3 уникальных хэштега, которые будут «#one, #seven, #red». В моем коде я могу сделать это с одним твитом, но я не могу понять, как вводить несколько твитов и находить от них все уникальные хэштеги.Hashtag Multiple

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

Я не хочу, чтобы сделать свою домашнюю работу для вас, но я предложу некоторые предложения:

  1. В main(), вы будете нуждаться в петле, которая запрашивает ввод и делает звонки - getHashtags().

  2. Вместо создания нового HashSet внутри getHashtags(), создать в main() (вне цикла), и передать его.

0

1.loop и получить много ЧИРИКНУТЬ входы что-то вроде

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

2.pass в tweetstring массиве вместо прохождения твит строку

3.loop через твит линию массива по линии и добавить тег, если и только если уже не добавило

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; 
+0

Что вы подразумеваете под передачей массива tweetstring? –

+0

вы пропустите один твит, вместо этого пропустите множество твитов. Это ниже сообщение может помочь вам: http: //stackoverflow.com/questions/11535017/passing-a-string-array-as-argument –

+0

вы все равно будете использовать тот же Set hashtags = getHashtags (твит); но имейте в виду, что вы передаете весь массив твитов сейчас, я хочу сказать, что я хочу сказать –

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

}

Так цикл и += должен сделать трюк.