因为之前有点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里
不知道我表述清楚了吗。
再次期待高手解答!
展开