- [必做 2] 读取小文本文件A_Tale_of_Two_Cities.txt 或者 大文本文件Gone_with_the_wind.txt,统计某一指定单词在该文本文件中出现的频率。
- 命令行格式: 提示符> Myapp.exe -f filename.txt -w word (PS:C++ 程序,Java 程序输出方式类似)
- 解释:
- 选项 -f 表示打开某一文件(filename.txt)
- 选项 -w 表示统计其后单词(word)在打开的文件(filename.txt)中的频率。
package 词频统计; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.Scanner; public class word2 { public static String fun(String a) { if(a.contains(",")||a.contains("."))//单词含标点。 { a=a.substring(0,a.length()-1);//把标点去掉。 return a; } else return a; } public static void main(String []s1) { String s; char m = 0,n; String []data=new String[1000];//存单词 String []value=new String[1000];//单词,不重复。 int []count=new int[1000];//对应个数。 int sum=0,j; for(i=0;i<1000;i++) //初始化个数。 { count[i]=1; } System.out.println("导入文件输入1,查询单词输入2"); Scanner m1=new Scanner(System.in); String m2=m1.nextLine(); switch(m2){ case 1:System.out.println("请输入所要查询的文件路径及文件名:"); Scanner sc=new Scanner (System.in); String files=sc.nextLine(); sc.close(); File file = new File(files); try { FileReader fileReader=new FileReader("n"); BufferedReader br=new BufferedReader(fileReader); s=br.readLine();//读取第一行 while(s!=null) { String []ss=s.split(" ");//取出单词 for( i=0;i<ss.length;i++) { ss[i]=fun(ss[i]);//把标点去掉。 for(j=0;j<sum;j++) { if(ss[i].equals(value[j])) { count[j]++; break; } } if(j==sum) { value[sum++]=ss[i]; } } s=br.readLine();//读取文件下一行 } } System.out.println("导入完成。"); case 2:System.out.println("请输入要查询的单词:"); Scanner n1=new Scanner(System.in); String n2=n1.nextLine(); for(int i=1;i<count.length;i++) { if(n2.equals(value[i])) System.out.println("该词在本文件中出现的次数为:"+count[i]+"次"); } } } }
代码根据上次作业修改,添加switch语句进行选择从而达到效果只不过不是直接-f和-w而是进行1,2选择。
时间: 2024-10-28 16:33:06