zoukankan      html  css  js  c++  java
  • 找《飘》 中最常用的N个单词。

    找《飘》 中最常用的N个单词。

    1,题目:输出单个文件(《飘》 英文版)中的前 N 个最常出现的英语单词,并将结果输入到文本文件中。

    2,设计思路:

    1),按行依次读取文件并按空格,逗号,圆点为分割标志将单词分割存到数组中。

    2),将数组去重存到另一个数组中。

    3),将字符串类型和整型数组的下标一 一对应用循环算出每一个单词出现的次数存在整型数组中。

    4),将字符串类型和整型数组的下标一 一对应,按单词出现的数目排序。

    5),将前N个单词输出到文件中。

    3,代码:

    import java.io.File;
    import java.io.InputStreamReader;
    import java.io.Reader;
    import java.util.Scanner;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;


    public class Dancitongji {
    private static String str="";
    private static Scanner sc=new Scanner(System.in);
    private static BufferedReader cin=null;
    private static String a[]=new String[1000000];
    private static String c[]=new String[10000000];
    private static int b[]=new int[1000000];
    private static int length=0;
    private static int length1=0;
    private static int nn=0;
    private static int j=0;
    //private static Boolean false;
    public static void cun() throws IOException {//将单词存到数组a
    { while(str!=null) {
    int i=0;
    str=str.toLowerCase(); //把大写改成小写
    for(i=0;i<str.length();i++) {
    if((str.charAt(i)>96&&str.charAt(i)<123)) {
    a[j]=a[j]+str.charAt(i);
    }
    if(str.charAt(i)==' '||str.charAt(i)==','||str.charAt(i)=='.') {
    if(!a[j].equals("")) {
    j=j+1;
    a[j]="";
    }
    }

    }
    str=cin.readLine();
    }
    length=j;
    }
    }

    public static void show() {//显示
    for(int k=0;k<nn;k++) {
    System.out.println(c[k]+" "+b[k]);
    }
    }
    public static void Sorting() {//排序
    int t3=0;
    int t2=0;
    String sr="";
    for(int i=0;i<length1-1;i++) {
    t3=i;
    for(int j=i+1;j<length1;j++) {
    if(b[t3]<b[j]) {
    t3=j;
    }
    }
    if(t3!=i) {
    t2=b[i];
    b[i]=b[t3];
    b[t3]=t2;
    sr=c[i];
    c[i]=c[t3];
    c[t3]=sr;
    }
    }
    }
    public static void Statistics(){//去重
    for(int k=0;k<length;k++) {
    b[k]=0;
    }
    c[0]=a[0];
    int tt=1;
    Boolean rt=true;

    for(int i=1;i<length;i++) {
    rt=false;
    for(int j=0;j<tt;j++) {
    if(a[i].equals(c[j])) {
    rt=true;
    break;
    }
    }
    if(!rt) {
    c[tt]=a[i];
    tt++;
    }
    }



    length1=tt;
    for(int i=0;i<length1;i++) {
    for(int j=0;j<length;j++) {
    if(c[i].equals(a[j])) {
    b[i]++;
    }
    }
    }
    }
    public static void Readfile() {
    File file=new File("D:\JAVA\java 书\3.txt");
    try {
    InputStreamReader read = new InputStreamReader(new FileInputStream(file),"UTF-8");
    cin=new BufferedReader(read);
    str=cin.readLine();
    cun();
    cin.close();
    read.close();
    }
    catch(IOException e) {
    System.out.println("读取失败!");
    e.printStackTrace();
    }
    }

    public static void Writefile() throws IOException {
    File file=new File("D:\JAVA\java 书\2.txt");
    if(!file.exists())
    file.createNewFile();
    FileWriter write = new FileWriter(file,true);
    BufferedWriter out=new BufferedWriter(write);
    for(int i=0;i<nn;i++){
    StringBuffer sb=new StringBuffer();
    out.write("这是第"+(i+1)+"个: ");
    out.write(c[i]+" "+b[i]);
    out.write(" ");

    }
    out.close();
    }
    public static void main(String[] args) throws IOException {
    System.out.println("请输入您要统计前几个最常出现的单词:");
    nn=sc.nextInt();
    a[0]="";
    Readfile();
    Statistics();
    Sorting();
    show();
    Writefile();

    }

    }

    4,运行测试:

  • 相关阅读:
    在linux下使用sqlcmd
    sqlserver 索引的结构及其存储,索引内容
    据库被标记为RESTORING的处理方式,正在还原中,正在恢复
    sql语句的优化分析
    SQL Server表分区-水平分区
    JavaScript Structure
    JS----Issue
    JavaScript Book Plan
    LINQ
    About JavaScript
  • 原文地址:https://www.cnblogs.com/20183544-wangzhengshuai/p/11588100.html
Copyright © 2011-2022 走看看