-2

我正在学习数组,我想制作一个程序来计算单词。鉴于:String myWords = {"soon; hi; also; soon; job; also"}; ,我必须创建一个方法,如countWrods(myWords); 打印结果应该是按字母顺序打印的单词、唯一单词的数量和总单词。这是我的代码:

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

4 回答 4

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 WORDS = 3

于 2013-12-30T17:55:10.217 回答
0

我建议你看看splittrimHashSet

于 2013-02-18T12:19:14.540 回答
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}

于 2013-02-18T12:32:32.417 回答
0

首先你需要拆分你的String, 大概在 ";" - 然后你可以把它打成一个TreeSet来排序,然后让单词变得不规则。添加一个计数器来计算总字数。您还可以使用 aTreeMap来记录每个单词的数量,覆盖地图上的 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()是按字母顺序排列Set的所有非安静词,如果您想要总数,您只需将这些值相加:

int totalWords = 0;
for(final Integer count : myStringMap.values()) {
  totalWorks += count;
}
于 2013-02-18T12:34:01.773 回答