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

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();

		StringBuffer strMessage="";	
	//循环读文件,readLine()每次只读一行
		while(bufferedReader.ready())	{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)+"秒");
		
		
	}
	
	
	
	
}

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值