java统计词频算法_JAVA词频统计 算法解释&如何编译

因为之前有点C语言基础所以选了一门DT的JAVA课设,完全悲剧。题目是做一个程序(不用图形界面),打开一个txt文件,找出其中指定的词出现了多少词,并输出结果,关键词保存在sentive....

因为之前有点C语言基础所以选了一门DT的JAVA课设,完全悲剧。

题目是做一个程序(不用图形界面),打开一个txt文件,找出其中指定的词出现了多少词,并输出结果,关键词保存在sentive.txt(别吐槽,拼错的是他)。每词一行。

我在网上找到了一串代码声称是解决这个问题的:

====代码如下===

import java.io.*;

public class cptj {

public int tongj(String line, String gpc) throws Exception {

String str = line;

String s1 = "";

if (str == null)

throw new Exception("");

char[] c = str.toCharArray();

// char [] w =new char[30];

int words = 0;

int num = 0;

int ip = 0;

boolean wordflag = false;

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

if ((c[i] >= 'a' && c[i] <= 'z') || (c[i] >= 'A' && c[i] <= 'Z')) {

// w[k] = c[i];

s1 = str.valueOf(c[i]);

if (wordflag) {

continue;

} else {

words++;

}

wordflag = true;

} else {

wordflag = false;

if (gpc.equals(s1)) {

s1 = "";

num++;

}

if (c[i] != ' ')

ip++;

}

}

String[] tempStrArray = str.split(gpc);

if (tempStrArray.length>0) {

num = tempStrArray.length-1;

}else{

num = 0;

}

System.out.println("words=" + words);

System.out.println("ip=" + ip+"num" + num);

/*

* int num=0; String [] arrWords=line.split(" "); for(int i =

* 0;i

* if(gpc.equals(word)){ num++; } }

*/

return num;

}

public void wbdru(String wbwz, String gpc) throws Exception {

cptj a = new cptj();

BufferedReader br = new BufferedReader(new FileReader(wbwz));

String line = null;

int C = 0, c = 0;

while ((line = br.readLine()) != null) {

c = a.tongj(line, gpc);

C = C + c;

}

System.out.println("你要统计的词汇: " + gpc + " 在本文中共出现了 " + C + " 次");

}

public static void main(String[] args) throws Exception {

cptj a = new cptj();

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

String wbwz = null;

String gpc = null;

System.out.println("请输入要统计的文本路径:");

wbwz = in.readLine();

System.out.println("请输入要统计的词语:");

gpc = in.readLine();

a.wbdru(wbwz, gpc);

}

}

====代码完=====

我也不知道这一串是否就是答案,但是问题是我连怎么让他编译都不知道。我试着直接把这个放在fre.class里或fre.java里在命令行里执行javac -g fre.class或.java 会提示出错,说我没写main函数什么的。

下周就要交报告了,实在是不想再为这个鬼通选课费劲,求高手帮助!

麻烦以对一个完全没有JAVA基础的人的方式告诉我这个程序是否正确,如何编译。

要是能简单说明一下算法就更好了。

直接把编译过的文件发给我也非常感谢!

邮箱fushiginoarisu@gmail.com

再次感谢大神相助!

谢谢哥们回答。

我刚去上机试了一下,首先……就像我开始说的……我不知道这个要怎么编译。

我把代码保存在wordscount.txt之后把扩展名改成了java,然后执行java wordscount,出来一行提示错误……应该不是这样运行的吧。我试着改成wordscount.class 然后javac wordscount.class也不能编译。麻烦讲解下傻瓜式操作方法……(对,我们老师就是这么水,讲了一学期我连个hellojava都不会编)

还有就是,我好像表述有点含糊。关键词是一开始就存在sentive.txt中的,不需要对该文件进行修改。而是拿着sentive.txt中的词在source.txt中找出现了几次。也就是说

==以下是sentive.txt的内容==

hello

java

sb

=====

===以下是source.txt的内容==

hellojavasb111289sb

=====

最后应该是在程序里输出

hello出现1次,java出现1次,sb出现2次。

而不是输出在sentive.txt里

不知道我表述清楚了吗。

再次期待高手解答!

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值