一次面试碰到的机试题:计数分词器---文件读写,比较排序,计数统计(觉得偏基础,值得关注)

来源:互联网 发布:https www.java.com 编辑:程序博客网 时间:2024/04/25 09:02

package com.accp.test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Calendar;


/*
 *
 * version:1.1
 * author:liuye
 * 实现功能:
 *   1,将已知文件读写到另一个文件中
 *   2,对文件内容每个单词分开换行输出
 *   3,根据单词大小排序
 *   4,统计相同单词出现的次数,即词频
 *   5,文件读到文件写完所用的时间
 *
 */


public class SimpleWordMachine {
 //利用字符流进行文件读写
 public static void main(String[] args) throws IOException {
  String strPath="C://Documents and Settings//Administrator//桌面//message.txt";
  //文件读
  FileReader fileReader=new FileReader(strPath);
  BufferedReader bufferedReader=new BufferedReader(fileReader);
  char[] strChar=new char[10000];
  
  Integer num=bufferedReader.read();

  String strMessage=""; 
 //循环读文件,readLine()每次只读一行
  for (int i = 0; i < 2; i++) {
   strMessage+=bufferedReader.readLine();
  }
  
 //关闭
  bufferedReader.close();
  fileReader.close();
  
  //这里确定时间,什么时候开始
  Calendar calendar=Calendar.getInstance();
  System.out.println(calendar.get(Calendar.HOUR_OF_DAY)+"时"+calendar.get(Calendar.MINUTE)+"分"+calendar.get(Calendar.SECOND)+"秒");
  
  //文件内容用空格分开
  String[] strNum=strMessage.split(" ");

  
  //比较数组元素中两个字符串的大小,并且排序列出
  try {
   for (int i = 0; i < strNum.length; i++) {
    for (int j = 0; j < strNum.length-1; j++) {
     if(strNum[j].compareTo(strNum[j+1])>0)
     {
      //交换位置
      String abc=strNum[j];
      strNum[j]=strNum[j+1];
      strNum[j+1]=abc;
     }
//     System.out.println(strNum[i].compareToIgnoreCase(strNum[j]));
//     System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
//     System.out.println(strNum[5]);
//     System.out.println(strNum[6]);
//     System.out.println(strNum[5].compareTo(strNum[6]));
////     System.out.println(strNum[5].compareToIgnoreCase(strNum[]));
     
    }
   }
   //排序后列出
   
   //定义声明变量;
   int numA;
   int numB=1;
   System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
   //业务逻辑实现,比较并计算重复的元素出现的次数
   for (int i = 0; i < strNum.length-1; i++) {
    System.out.println(strNum[i]);
    //赋值
    numA=0;
    if(strNum[i].compareToIgnoreCase(strNum[i+1])==0)
    {
     //比较的始终是两个数,则比较基数是2个数,则单个相同单词出现的次数基数也是2,然后累加。
     numB+=++numA;
     System.out.println(strNum[i]+"出现了-------------"+numB+"次");
    }
    else
    {
     //不相等,则将numB的值还原
     numB=1;
    }
   }
  } catch (RuntimeException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
  System.out.println("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");

  //先写在这里,然后到后面功能实现的时候在写进去.,文件写,注意转义字符/
  FileWriter fileWriter=new FileWriter("C://Documents and Settings//Administrator//桌面//liuye//java.txt");
  BufferedWriter bufferedWriter=new BufferedWriter(fileWriter);
  for (int i = 0; i < strNum.length; i++) {
   bufferedWriter.write(strNum[i]+"/n");
   System.out.println(strNum[i]);
   
  }
  bufferedWriter.close();
  fileWriter.close();
  
  
  //文件写完所用的时间
  System.out.println(calendar.get(Calendar.HOUR_OF_DAY)+"时"+calendar.get(Calendar.MINUTE)+"分"+calendar.get(Calendar.SECOND)+"秒");
  
  
 }
 
 
 
 
}