一个面试时的机试题

互联网时光机 2007-05-17 10:36:36
有一段数据,共15行6列,内容如下:
7272,"车江","转扣预存",200704,"衡南县",+0000000022675.73
7273,"车江","转扣预存",200704,"衡南县",+0000000011322.80
7273,"车江","转扣预存",200704,"衡南县",7322.80
7283,"向阳桥","转扣预存",200704,"衡南县",-0000033289.55
7283,"向阳桥","转扣预存",200704,"衡南县",289.55
7291,"三塘","转扣预存",200704,"衡南县",+0000000037059.34
7291,"三塘","转扣预存",200704,"衡南县",-12268.84
7292,"三塘","转扣预存",200704,"衡南县",+0000000016902.98
12043,"廖田","转扣预存",200704,"衡南县",aafd
12043,"廖田","转扣预存",200704,"衡南县",-9809
12043,"廖田","转扣预存",200704,"衡南县",+0000000000212.04
12051,"江口","转扣预存",200704,"衡南县",+0000000030441.11
12051,"江口","转扣预存",200704,"衡南县",26841.11
12051,"江口","转扣预存",200704,"衡南县",+0000000030441.11
12052,"江口","转扣预存",200704,"衡南县",02e574.79


将该数据存储在文本文件A中
要求读入该文件,然后把第6列是正确数值的行取出,按第2列升序排列,再写入到文件B中;把第6列不是正确数值的行写入到文件C中
...全文
1079 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamliboyang 2007-06-02
  • 打赏
  • 举报
回复
like
互联网时光机 2007-06-02
  • 打赏
  • 举报
回复
不知道为什么,不能结贴了,总是报javascript error错误,怎么办,楼上的兄弟们。
richard_2010 2007-05-30
  • 打赏
  • 举报
回复
受教了
liujun999999 2007-05-30
  • 打赏
  • 举报
回复
衡阳老乡啊,哈哈
互联网时光机 2007-05-30
  • 打赏
  • 举报
回复
谢谢仁兄啊
对java了解真是深啊
  • 打赏
  • 举报
回复
mark
sss_free 2007-05-19
  • 打赏
  • 举报
回复
按拼音排序修改MyComparator 如下
mport java.text.Collator;
import java.util.*;
public class MyComparator implements Comparator<String>{
public int compare(String a,String b){
a=a.substring(a.indexOf("\"")+1);
a=a.substring(0,a.indexOf("\""));
b=b.substring(b.indexOf("\"")+1);
b=b.substring(0,b.indexOf("\""));

int flag=Collator.getInstance(java.util.Locale.CHINA).compare(a, b);
if(flag==0)return 0;
if(flag<0)return -1;
else return 1;

}

}
结果
7272,"车江","转扣预存",200704,"衡南县",+0000000022675.73
7273,"车江","转扣预存",200704,"衡南县",+0000000011322.80
7273,"车江","转扣预存",200704,"衡南县",7322.80
12051,"江口","转扣预存",200704,"衡南县",+0000000030441.11
12051,"江口","转扣预存",200704,"衡南县",26841.11
12051,"江口","转扣预存",200704,"衡南县",+0000000030441.11
12043,"廖田","转扣预存",200704,"衡南县",-9809
12043,"廖田","转扣预存",200704,"衡南县",+0000000000212.04
7291,"三塘","转扣预存",200704,"衡南县",+0000000037059.34
7291,"三塘","转扣预存",200704,"衡南县",-12268.84
7292,"三塘","转扣预存",200704,"衡南县",+0000000016902.98
7283,"向阳桥","转扣预存",200704,"衡南县",-0000033289.55
7283,"向阳桥","转扣预存",200704,"衡南县",289.55
sss_free 2007-05-19
  • 打赏
  • 举报
回复
测试命令行:
java c:\disk4\testenv\telerec.txt c:\disk4\testenv\a.txt c:\disk4\testenv\b.txt
telerec.txt 内容为:
7272,"车江","转扣预存",200704,"衡南县",+0000000022675.73
7273,"车江","转扣预存",200704,"衡南县",+0000000011322.80
7273,"车江","转扣预存",200704,"衡南县",7322.80
7283,"向阳桥","转扣预存",200704,"衡南县",-0000033289.55
7283,"向阳桥","转扣预存",200704,"衡南县",289.55
7291,"三塘","转扣预存",200704,"衡南县",+0000000037059.34
7291,"三塘","转扣预存",200704,"衡南县",-12268.84
7292,"三塘","转扣预存",200704,"衡南县",+0000000016902.98
12043,"廖田","转扣预存",200704,"衡南县",aafd
12043,"廖田","转扣预存",200704,"衡南县",-9809
12043,"廖田","转扣预存",200704,"衡南县",+0000000000212.04
12051,"江口","转扣预存",200704,"衡南县",+0000000030441.11
12051,"江口","转扣预存",200704,"衡南县",26841.11
12051,"江口","转扣预存",200704,"衡南县",+0000000030441.11
12052,"江口","转扣预存",200704,"衡南县",02e574.79
==================
a.txt 内容为
7291,"三塘","转扣预存",200704,"衡南县",+0000000037059.34
7291,"三塘","转扣预存",200704,"衡南县",-12268.84
7292,"三塘","转扣预存",200704,"衡南县",+0000000016902.98
7283,"向阳桥","转扣预存",200704,"衡南县",-0000033289.55
7283,"向阳桥","转扣预存",200704,"衡南县",289.55
12043,"廖田","转扣预存",200704,"衡南县",-9809
12043,"廖田","转扣预存",200704,"衡南县",+0000000000212.04
12051,"江口","转扣预存",200704,"衡南县",+0000000030441.11
12051,"江口","转扣预存",200704,"衡南县",26841.11
12051,"江口","转扣预存",200704,"衡南县",+0000000030441.11
7272,"车江","转扣预存",200704,"衡南县",+0000000022675.73
7273,"车江","转扣预存",200704,"衡南县",+0000000011322.80
7273,"车江","转扣预存",200704,"衡南县",7322.80
======================
b.txt内容为
12043,"廖田","转扣预存",200704,"衡南县",aafd
12052,"江口","转扣预存",200704,"衡南县",02e574.79

缺点:
排序是按照unicode次序排列的,不是按照汉语拼音排列的。
sss_free 2007-05-19
  • 打赏
  • 举报
回复
楼主我修改测试过了
import java.io.*;
import java.util.*;
public class TeleRecProc {
/**
* @param args
*/
String correctRecPath;
String wrongRecPath;
BufferedWriter correctRecWriter;
BufferedWriter wrongRecWriter;

LinkedList<String> correctRecSet;
public static void main(String[] args) {
// TODO Auto-generated method stub
if(args.length<3){
System.out.println("Usage:TeleRecProc InputData GoodRecRepository BadRecRepository");
System.exit(-1);
}


try{
BufferedReader br;
br=new BufferedReader(new InputStreamReader(new FileInputStream(args[0])));
String rec;
TeleRecProc teleRecProc=new TeleRecProc(args);
while((rec=br.readLine())!=null){
if(teleRecProc.isRecCorrect(rec)) teleRecProc.insertCorrectRecSet(rec);
else teleRecProc.writeWrongRec(rec);
}
teleRecProc.sortRec();
teleRecProc.cleanUp();
}catch(IOException ex){
System.out.println("in main:"+ex.getLocalizedMessage());
}
System.out.println("done!\n");
}
public TeleRecProc(String[] args)
{
correctRecPath=args[1];
wrongRecPath=args[2];
}
boolean isRecCorrect(String rec)
{
rec=rec.trim();
rec=rec.substring(rec.lastIndexOf((int)',')+1);
try{
Float.parseFloat(rec);
}catch(NumberFormatException ex){
return false;
}
return true;
}
void writeCorrectRec(LinkedList<String> recSet)throws IOException
{
correctRecWriter=new BufferedWriter(
new OutputStreamWriter
(new FileOutputStream
(correctRecPath,false)
)
);
Iterator<String> it=recSet.iterator();
while(it.hasNext()){
String rec = it.next().toString();
correctRecWriter.write(rec);
correctRecWriter.newLine();
}
}
void writeWrongRec(String rec)throws IOException
{
if(wrongRecWriter==null)
wrongRecWriter=new BufferedWriter(
new OutputStreamWriter
(new FileOutputStream
(wrongRecPath,false)
)
);
wrongRecWriter.write(rec);
wrongRecWriter.newLine();
}
void insertCorrectRecSet(String rec)
{
if(correctRecSet==null)correctRecSet=new LinkedList<String>();
correctRecSet.add(rec);
}
void sortRec()
{
Collections.sort(correctRecSet,new MyComparator());
}
void cleanUp()throws IOException
{

writeCorrectRec(correctRecSet);
correctRecWriter.flush();
correctRecWriter.close();

if(wrongRecWriter!=null){
wrongRecWriter.flush();
wrongRecWriter.close();
}
}

}
import java.util.*;
public class MyComparator implements Comparator<String>{
public int compare(String a,String b){
a=a.substring(a.indexOf("\"")+1);
a=a.substring(0,a.indexOf("\""));
b=b.substring(b.indexOf("\"")+1);
b=b.substring(0,b.indexOf("\""));
if(a.compareTo(b)>0)return 1;
if(a.compareTo(b)==0)return 0;
else return -1;

}

}
sss_free 2007-05-18
  • 打赏
  • 举报
回复
没测试过,只是编译过去了,你调试一下!
import java.io.*;
import java.util.*;
public class TeleRecProc {
/**
* @param args
*/
String correctRecPath;
String wrongRecPath;
BufferedWriter correctRecWriter;
BufferedWriter wrongRecWriter;

LinkedList<String> correctRecSet;
public static void main(String[] args) {
// TODO Auto-generated method stub
if(args.length<3){
System.out.println("Usage:TeleRecProc InputData GoodRecRepository BadRecRepository");
System.exit(-1);
}
try{
BufferedReader br;
br=new BufferedReader(new InputStreamReader(new FileInputStream(args[1])));
String rec;
TeleRecProc teleRecProc=new TeleRecProc();
while((rec=br.readLine())!=null){
if(teleRecProc.isRecCorrect(rec)) teleRecProc.insertCorrectRecSet(rec);
else teleRecProc.writeWrongRec(rec);
}
teleRecProc.sortRec();
teleRecProc.cleanUp();
}catch(IOException ex){
}
}
boolean isRecCorrect(String rec)
{
rec=rec.trim();
rec=rec.substring(rec.lastIndexOf((int)',')+1);
try{
Float.parseFloat(rec);
}catch(NumberFormatException ex){
return false;
}
return true;
}
void writeCorrectRec(LinkedList<String> recSet)throws IOException
{
correctRecWriter=new BufferedWriter(
new OutputStreamWriter
(new FileOutputStream
(correctRecPath,false)
)
);
Iterator<String> it=recSet.iterator();
while(it.hasNext()){
String rec = it.next().toString();
correctRecWriter.write(rec+"\n");
}
}
void writeWrongRec(String rec)throws IOException
{
if(wrongRecWriter==null)
wrongRecWriter=new BufferedWriter(
new OutputStreamWriter
(new FileOutputStream
(wrongRecPath,false)
)
);
wrongRecWriter.write(rec+"\n");
}
void insertCorrectRecSet(String rec)
{
if(correctRecSet==null)correctRecSet=new LinkedList<String>();
correctRecSet.add(rec);
}
void sortRec()
{
Collections.sort(correctRecSet,new MyComparator());
}
void cleanUp()throws IOException
{
if(correctRecWriter!=null){
correctRecWriter.flush();
correctRecWriter.close();
}
if(wrongRecWriter!=null){
wrongRecWriter.flush();
wrongRecWriter.close();
}
}

}
=========================================
import java.util.*;
public class MyComparator implements Comparator<String>{
public int compare(String a,String b){
a=a.substring(a.indexOf("\"")+1);
b=b.substring(b.indexOf("\"")+1);
if(a.charAt(0)>b.charAt(0))return 1;
if(a.charAt(0)==b.charAt(0))return 0;
else return -1;

}

}
kimmking 2007-05-18
  • 打赏
  • 举报
回复
我在开发一个类似这样文本的数据库驱动。
正在做一些基础工作,比较忙,进度很慢。

在csdn的开源里有。qsoftdb.

----------------------------------
有兴趣的朋友可以看看,也可以加盟以下。
lixin5678 2007-05-18
  • 打赏
  • 举报
回复
把数据行对象做成一个类Class A,内部有6个成员变量,
重写A的compareTo()方法,
追加write方法,
用Arrays.sort(A[])排序后,
数组循环内调用write()方法就可以了。
beibeiG 2007-05-18
  • 打赏
  • 举报
回复
啥意思?
sss_free 2007-05-18
  • 打赏
  • 举报
回复
测试好了再说
互联网时光机 2007-05-18
  • 打赏
  • 举报
回复
先给你分阿
aliwkxqq 2007-05-17
  • 打赏
  • 举报
回复
把要求寫清楚一點嗎!!
互联网时光机 2007-05-17
  • 打赏
  • 举报
回复
不是数字,就是不是int型的
dyw31415926 2007-05-17
  • 打赏
  • 举报
回复
把第6列不是正确数值的行写入到文件C中
判断正确与否的依据是什么?是根据长度还是首字母?还是别的规则?
sss_free 2007-05-17
  • 打赏
  • 举报
回复
mark
likgui 2007-05-17
  • 打赏
  • 举报
回复
关注
加载更多回复(1)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧