2013-02-18 62 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 2013-02-18 12:19:22

+1

你实际上是在试着做String [] myWords = {“soon”,“hi”,“also”,“soon”,“job”,“mother”,“job”,“also “,”很快“,”稍后“};' – jlordo 2013-02-18 12:21:05

+0

请参阅[那](http://stackoverflow.com/questions/how-to-ask)问之前,我认为你不符合第一,第三和第四点。 – 2013-07-02 16:16:03

回答

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来对它进行排序,然后让这些单词不起作用。添加一个计数器来计算总词数。你也可以使用一个TreeMap保持每个单词的计数,覆盖地图上的put方法来聚合,你去...

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()是按字母顺序排序所有unquie话Set,如果你想总,你只需要添加了值:

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

谢谢大家,我正在为此努力,我会让你知道进展情况。 – user1835208 2013-02-18 16:17:53

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

输入:字计数器
输出:节数字= 3

相关问题