一次面试碰到的机试题:计数分词器---文件读写,比较排序,计数统计(觉得偏基础,值得关注)
2009-03-30 17:41
555 查看
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)+"秒");
}
}
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)+"秒");
}
}
相关文章推荐
- C++文件读写总结,做USACO碰到问题,找到一篇比较全面的
- perl下关于文件读写,hash统计频数并排序的总结
- 【利用perl的基因数据处理】1.基础的的DNA文件读写和碱基特征统计
- [置顶] Linux awk+uniq+sort 统计文件中某字符串出现次数并排序
- Android基础学习笔记之-基本文件读写实现
- php杂记——1(基础知识与文件读写)
- 一次面试的试题(部分)——我不会做的
- java面试准备之基础排序——冒泡与选择排序
- 分享一份《VC(C++)基础技术面试试题》
- 倍福TwinCAT(贝福Beckhoff)基础教程4.1 TwinCAT如何读写TXT文件
- 读写文件--passwd排序
- [基础|理论|实验]linux下的文件读写
- c++简单读写文本,统计文件的行数,读取文件数据到数组
- Java基础之IO流,以字节流的方式操作读写文件FileOutputStream和FileInputStream的使用
- java基础巩固训练营【第一轮】(八) 文件读写
- C++读写Excel文件方式比较
- golang基础-终端读(Scanln\bufio)、bufio文件读、、ioutil读读压缩、缓冲区读写、文件写入、文件拷贝
- java 对文件内容进行分词统计
- STL文件读写基础
- 前端资源系列-教程&模块化/规范化/工程化/优化&工具/调试&值得关注的博客/Git&面试资源汇总