2013-02-18 2 views
-2

Я узнал о массивах, и я хотел сделать слова для подсчета программ. Дано: String myWords = {"soon; hi; also; soon; job; also"}; , мне нужно создать метод, подобный countWrods(myWords); Отпечатанный результат должен быть отпечатан в алфавитном порядке, количестве уникальных слов и полных слов. вот мой код:Как считать слова в массиве строк в java?

public class Words { 
    public static void main(String[] args){  
     String[] myWords = {"soon; hi; also; soon; job; mother; job; also; soon; later"}; 
     Words myW= new Words(); 
     myW.countWords(); 
     System.out.println("\tWords \tFreq"); 
    } 
    public static String[] countWords(myWords){ 
     for (int i=0; i<myWords.length; i++){ 
     String temp = myWords[i]; 
     //System.out.println(temp + " "); 
     for(int j=i+1; j<myWords.length; j++){ 
     String temp2= myWords[j]; 

      System.out.println("No. of unique words: "); 
     } 
     } 
    } 
} 

Что я должен делать дальше?

+4

Ваш массив строк содержит только один элемент. Просто говорю. (Может быть одна строка) – keyser

+1

Вы действительно пытаетесь сделать 'String [] myWords = {" soon "," hi "," also "," soon "," job "," mother "," job "," and "," soon "," later "};' – jlordo

+0

Перед тем, как задать вопрос, посмотрите [this] (http://stackoverflow.com/questions/how-to-ask), я думаю, что вы не согласны с первым, третьим и четвертым точки. –

ответ

0

Я предполагаю, что вы хотите посчитать слова в строке.

Строка: "soon hi also soon job mother job also soon later"

public class Words { 

Map<String , Integer> dictionary=new HashMap<String,Integer>(); 

public static void main(String[] args) { 
    String myWords = "soon hi also soon job mother job also soon later"; 
    Words myW = new Words(); 
    String[] array=myWords.split("\\s+"); 
    myW.countWords(array); 
    System.out.println(myW.dictionary); 
} 

private void countWords(String[] myWords) { 

    for(String s:myWords){ 

     if(dictionary.containsKey(s)) 
      dictionary.put(s, dictionary.get(s)+1); 
     else 
      dictionary.put(s, 1); 
    } 
} 
} 

O/P : {mother=1, later=1, job=2, hi=1, also=2, soon=3}

0

Прежде всего, необходимо разделить ваш String, предположительно на ";" - тогда вы можете ударить это в TreeSet, чтобы отсортировать его и сделать затем слова unqiue. Добавьте счетчик, чтобы подсчитать общие слова. Вы можете также использовать TreeMap держать подсчет каждого слова, переопределить метод положить на карту, чтобы агрегировать, как вы идете ...

final String myString = {"soon; hi; also; soon; job; mother; job; also; soon; later"}; 
final String[] myStrings = myString.split(";"); 
final Map<String, Integer> myStringMap = new TreeMap<>(){ 
@override 
public String put(final String key, final Integer value) { 
    if(contains(key)) { 
    return put(key, get(key) + 1); 
    } else { 
    return put(key, 1); 
    } 
} 
}; 
for(final String string : myStrings) { 
    myStringMap.put(string.trim(), 1); 
} 

Теперь myStringMap.size() это количество уникальных слов, myStringMap.keys() это в алфавитном порядке Set всех unquie слов, и если вы хотите, всего вам просто нужно сложить значения:

int totalWords = 0; 
for(final Integer count : myStringMap.values()) { 
    totalWorks += count; 
} 
+0

Спасибо всем, я работаю над этим, и я дам вам знать о прогрессе. – user1835208

1
import java.io.*; 
import java.util.*; 

public class Count_Words_Scan 
{ 
    void main()throws IOException 
    { 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

     System.out.println("ENTER A STRING "); 
     String str = br.readLine(); 
     str= str.toLowerCase(); 
     int c=0; 
     Scanner sc = new Scanner(str); 
     while(sc.hasNext()) 
     { 
      sc.next(); 
      c++; 
     } 
     System.out.println("NO.OF WORDS = "+c); 
    } 
} 

Вход: счетчик слово
Выход: No.of сЛОВА = 3