鱼C论坛

 找回密码
 立即注册
查看: 5551|回复: 2

[已解决]Java统计词频

[复制链接]
发表于 2021-3-20 12:45:01 | 显示全部楼层 |阅读模式
5鱼币
public class Test2
{

    public static  void  main(String[] args)
    {
        String file ="King Athamus of northern Greece had two children," +
                "Phrixus and Helle.After he left his first wife and mar " +
                "ried Ino,a wicked woman,the two children received all" +
                "At one timethe kingdom was ruined by a famine.";


        String[] words = new String[10000];
        StringBuffer tempWord = new StringBuffer();
        int[] times = new int[100];
        String[] word = new String[100];
        String vocabulary1 = new String();
        String vocabulary2 = new String();
        int index = 0;

        int i = 0;
        for (int j = 0; j<file.length();j++)
        {
            i=j;

            char c;
            while (((c = file.charAt(i)) != ' ')
                    &&((c = file.charAt(i)) != ','
                    &&((c = file.charAt(i)) != '.')))//charArt返回当前位置的字符 从0开始
            {
                tempWord.append(c);
                i++;

            }

            j=i;
            System.out.print(i);
            System.out.print("  ");
            String temp = tempWord.toString();
            // System.out.println(temp);

            words[j] = temp;
            System.out.println(words[j]);

            tempWord.delete(0,tempWord.length());
        }

        System.out.println("ending");
        System.out.println(words);

        for (int j = 0; j<50;j++)
        {
            for(i = 0;i<=index;i++)
            {
                vocabulary1 = words[j];
                vocabulary2 = word[i];

                if(vocabulary1.equalsIgnoreCase(vocabulary2))
                {
                    times[i] = times[i] + 1;
                    break;
                }

                else if (i == index)
                {
                    if(vocabulary1.equalsIgnoreCase(vocabulary2))
                    {
                        times[i] = times[i] + 1;
                        break;
                    }

                    else
                    {
                        index += 1;
                        word[index] = words[j];
                        times[index] += 1;
                    }
                }
            }
        }

        System.out.println(word);
        for(i = 0;i<50;i++)
        {
            System.out.println(times[i]);
        }

    }






}

刚学Java,有个统计词频的东西要写,呃用数组来统计的,求大佬指点,一直没闹懂哪出问题了
最佳答案
2021-3-20 12:45:02

import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;

public class Test4 {
    public static void main(String[] args) {
        String file = "King Athamus of northern Greece had two children , " +
                "Phrixus and Helle . After he left his first wife and mar " +
                "ried Ino , a wicked woman , the two children received all" +
                "At one timethe kingdom was ruined by a famine .";

        String[] s1 = file.split(" ");
        Map map = new LinkedHashMap();
        int count = 0;
        for (String s2 : s1) {
            if (!s2.equals(".") && !s2.equals(",") && !s2.equals(" ")) {
                //判断指定的Key是否存在
                if (map.containsKey(s2)) {
                    //获取当前单词次数count
                    count = (Integer) map.get(s2);
                    //次数加1
                    map.put(s2, ++count);
                } else {
                    count=1;
                    map.put(s2, count);
                }
            }

        }

        Iterator it = map.keySet().iterator();
        String word;
        while (it.hasNext()) {
            word = (String) it.next();
            System.out.println(word + "------->" + map.get(word));
        }

    }
}

最佳答案

查看完整内容

import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; public class Test4 { public static void main(String[] args) { String file = "King Athamus of northern Greece had two children , " + "Phrixus and Helle . After he left his first wife and mar " + "ried Ino , a wicked woman , the two children received all" + ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-20 12:45:02 | 显示全部楼层    本楼为最佳答案   

import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;

public class Test4 {
    public static void main(String[] args) {
        String file = "King Athamus of northern Greece had two children , " +
                "Phrixus and Helle . After he left his first wife and mar " +
                "ried Ino , a wicked woman , the two children received all" +
                "At one timethe kingdom was ruined by a famine .";

        String[] s1 = file.split(" ");
        Map map = new LinkedHashMap();
        int count = 0;
        for (String s2 : s1) {
            if (!s2.equals(".") && !s2.equals(",") && !s2.equals(" ")) {
                //判断指定的Key是否存在
                if (map.containsKey(s2)) {
                    //获取当前单词次数count
                    count = (Integer) map.get(s2);
                    //次数加1
                    map.put(s2, ++count);
                } else {
                    count=1;
                    map.put(s2, count);
                }
            }

        }

        Iterator it = map.keySet().iterator();
        String word;
        while (it.hasNext()) {
            word = (String) it.next();
            System.out.println(word + "------->" + map.get(word));
        }

    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-3-20 16:57:55 | 显示全部楼层
public class Text3
{


    public static void main(String args[])
    {
        String file ="King Athamus of northern Greece had two children , " +
                "Phrixus and Helle . After he left his first wife and mar " +
                "ried Ino , a wicked woman , the two children received all" +
                "At one timethe kingdom was ruined by a famine .";

        String[] words = file.split(" ");
        int[] times = new int[42];
        String[] word = new String[42];
        String vocabulary1 = new String();
        String vocabulary2 = new String();
        int index = 0;
        for(int i = 0;i<42;i++)
        {
            word[i] = " ";
        }

        for(int i = 0;i<42;i++)
        {
            if(words[i].equalsIgnoreCase("."))
            {
                words[i] = " ";
            }

            else if(words[i].equalsIgnoreCase(","))
            {
                words[i] = " ";
            }

            else
            {
                continue;
            }

        }

        for (int j = 0; j<42;j++)
        {
            for(int i = 0;i<=index;i++)
            {
                vocabulary1 = words[j];
                vocabulary2 = word[i];

                if (i == index)
                {
                    index += 1;
                    word[index] = words[j];
                    times[index] += 1;
                    break;
                }

                else if(vocabulary1.equalsIgnoreCase(vocabulary2))
                {
                    times[i] = times[i] + 1;
                    break;
                }
            }
        }


        for(int i = 0;i<42;i++)
        {
            if(word[i].equalsIgnoreCase(" "))
            {
                continue;
            }
            else
            {
                System.out.println(word[i]+"---->"+times[i]);
            }

        }

    }

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 19:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表