zoukankan      html  css  js  c++  java
  • 课堂测试,统计小说<飘>前N个最常出现的单词

      思路:这道题设计文件知识,但自己还没有学到文件,所有自己在网上查了一些知识。

                 1、首先是将飘的英文原文放到文本文件中,一行一行读入。(因为不涉及大小写,所有用了toLowerCase()方法)

                 2、若有‘ ’,‘,’,‘。’等标点,则将之前的字符组成单词,并判断之前字符串数组是否有这个单词,若有则个数加1,没有则在字符串数组后新加,然后个数加1.直到读完。

                 3、给字符串数组和个数数组排序,按照选择排序;

                4、在文本文件里输出前N个最常出现的单词

    代码:

     1 package com.javaclass2;
     2 import java.io.File;  
     3 import java.io.InputStreamReader;
     4 import java.util.Scanner;
     5 import java.util.StringTokenizer;
     6 import java.io.BufferedReader;  
     7 import java.io.BufferedWriter;  
     8 import java.io.FileInputStream;
     9 import java.io.FileNotFoundException;
    10 import java.io.FileReader;
    11 import java.io.FileWriter; 
    12 public class TestText {
    13     static int num=0,a=0;
    14     static String word[]=new String[1000000];
    15     static int wordnum[]=new int[1000000];
    16     public static void main(String args[]) {
    17         Scanner scanner = new Scanner(System.in);
    18         System.out.println("请输入n(n为前n个最长出现的单词个数):");
    19         int n=scanner.nextInt();
    20         try{
    21             String path = "C:/Users/MACHENIKE/Desktop/飘英文版.txt";
    22             File file = new File(path);    
    23             InputStreamReader reader = new InputStreamReader(new FileInputStream(file));
    24             BufferedReader br = new BufferedReader(new FileReader(file));
    25             File file2 = new File("C:/Users/MACHENIKE/Desktop/飘.txt");
    26             file2.createNewFile();
    27             BufferedWriter out = new BufferedWriter(new FileWriter(file2));
    28             String s="";
    29             s=br.readLine();
    30             while(s!=null) {
    31                 s=s.toLowerCase();// 大写转小写
    32                 StringTokenizer st = new StringTokenizer(s," .,?;!
    :“”‘: ");
    33                while(st.hasMoreElements()) {
    34                String str =(String)st.nextElement();
    35                 for(int j=0;j<num;j++) {
    36                     if(str.equals(word[j])) {
    37                         wordnum[j]++;
    38                         }else a++;
    39                     }
    40                 if(a==num) {
    41                     word[num]=str;
    42                     wordnum[num]++;
    43                     num++;
    44                     }
    45                 a=0;
    46                 }
    47                s=br.readLine();
    48             }
    49             for(int i=0;i<num;i++) {
    50                 for(int j=i+1;j<num;j++) {
    51                     if(wordnum[j]>wordnum[i]) {
    52                         int temp=wordnum[i];
    53                         wordnum[i]=wordnum[j];
    54                         wordnum[j]=temp;
    55                         String Temp=word[i];
    56                         word[i]=word[j];
    57                         word[j]=Temp;
    58                     }
    59                 }
    60             }
    61             for(int i=0;i<n;i++) {
    62                 System.out.println(word[i]);
    63             }
    64             for(int i=0;i<n;i++) {
    65                 out.write(i+":"+word[i]+" ");
    66                 out.flush();    
    67             }
    68             out.close();
    69             }catch(Exception e){
    70                 e.printStackTrace();
    71                 }
    72     }
    73     
    74 }

    运行结果:

      

        文件还有好多不懂,还有多练习多学习。

      如果有错误或者更好的办法,请留言提出,感谢!!!

  • 相关阅读:
    [转]c#的DateTime.Now函数详解
    PHP学习笔记
    【错误】MsDepSvc.exe 站用了80端口/IIS的0×8ffe2740错误解决方
    IIS连接数
    Mybatis3.2.1整合Spring3.1
    linux常用命令大全
    Spring3.2新注解@ControllerAdvice
    SpringMVC强大的数据绑定(2)——第六章 注解式控制器详解
    Console命令详解,让调试js代码变得更简单
    String.format
  • 原文地址:https://www.cnblogs.com/yangxiao-/p/11603102.html
Copyright © 2011-2022 走看看