今天下午我们在学习Java的过程中,王老师给我们留下了一个程序设计作业,其要求是让我们设计一个程序,要实现 输出单个文件中的前 N 个最常出现的英语单词,并将结果输入到文本文件中的功能。我思考并上机了一个下午最终实现了部分功能。
首先当看到这个题目的时候,我想到了将这个实验分成三部分:
1.读取指定文本的内容;
2.统计所有单词在该文本中的出现次数;
3.将结果输入到指定文本。
经过下午上机的努力,我仅仅实现了第一个功能。后来经过求助我的舍友,完成了第二个功能。第三个功能尚未实现。
实验源码如下:
package yingwen;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
public class yingwen {
private int num[]=new int[52];
public void readTxt(String filePath) {
import java.io.FileInputStream;
import java.io.InputStreamReader;
public class yingwen {
private int num[]=new int[52];
public void readTxt(String filePath) {
try {
File file = new File(filePath);
if(file.isFile() && file.exists()) {
InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "utf-8");
while(isr.ready())
{
char c=(char)isr.read();
if(c>='a'&&c<='z')
{
++num[(int)(c-'a')];
}
else if(c>='A'&&c<='Z')
{
++num[(int)(c-'A')];
}
}
isr.close();
} else {
System.out.println("文件不存在!");
}
} catch (Exception e) {
System.out.println("文件读取错误!");
}
File file = new File(filePath);
if(file.isFile() && file.exists()) {
InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "utf-8");
while(isr.ready())
{
char c=(char)isr.read();
if(c>='a'&&c<='z')
{
++num[(int)(c-'a')];
}
else if(c>='A'&&c<='Z')
{
++num[(int)(c-'A')];
}
}
isr.close();
} else {
System.out.println("文件不存在!");
}
} catch (Exception e) {
System.out.println("文件读取错误!");
}
}
public int[] num1()
{
return num;
}
public int[] num1()
{
return num;
}
public static void main(String[] args) {
String filePath = "E:\Yingwen\English.txt";
yingwen a=new yingwen();
a.readTxt(filePath);
int num[]=a.num1();
for(int i=0;i<52;i++)
{
if(i<=25)
System.out.println((char)(i+'a')+" "+num[i]);
else System.out.println((char)(i+'A'-26)+" "+num[i]);
}
}
}
String filePath = "E:\Yingwen\English.txt";
yingwen a=new yingwen();
a.readTxt(filePath);
int num[]=a.num1();
for(int i=0;i<52;i++)
{
if(i<=25)
System.out.println((char)(i+'a')+" "+num[i]);
else System.out.println((char)(i+'A'-26)+" "+num[i]);
}
}
}