java编程序CompFile逐行读入这两个指定文件的内容并进行比较
编程序CompFile,首先让用户输入两个文件名及其路径(二文件均为text文件),而后通过使用类成员函数getline逐行读入这两个指定文件的内容并进行比较。若发现有不同,则在屏幕上显示出相异二行的行号及其内容,并暂停下来询问用户是否需要继续比较后继行,直到用户回答不需要继续进行比较,或者已经比到了二文件的结束时停止处理。
思考:也可改写程序,将“让用户输入两个文件名及其路径”改为从命令行参数处获取这两个文件名及其路径。
19.2概要设计:
本程设计思路: 要实现读取文件的比较,那就每读一行比较一次,用一个flag来记录当前是第几行,如果有不同出现,就显示出不同的行数,及内容,然后让用户选择错做。
19.3 详细设计与编码:
见上传程序。
19.4 调试分析:
这题在比较不同的时候很诡异的,有时候能不每一行的不同都标出来。但有的时候却是只能显示出不同的地方,但是不同行却老是显示为第一个不匹配的行数。没查出来是哪里出的问题。
程序执行的结果:
19.5 用户使用说明:
按提示输入两个文件的路径,然后选择操作。
19.6 设计心得:
这题实现起来并不是很困难,但是在调试的时候我却是没能找出来到底是哪里出了问题,有时候好,有时候有不行的,所以有时候自己写的东西就算是正确运行了也是不一定是正确的。在设计的时候应当多考虑些东西,才不会最后成了找不出问题所在的情况。
import java.io.*;
public class ershiba {
public static void main(String[] args) throws IOException {
int flag = 0;
int m=0,n=0;
String path="";
String path2="";
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("输入文件1的路径:");
path=br.readLine();
System.out.println("输入文件2的路径:");
原文请找腾讯752018766优,文-论'文.网http://www.youerw.com
String s1 = null;
String s2 = null;
on: for (s1 = br1.readLine(),s2 = br2.readLine(); s1 != null && s2!=null; s1 = br1.readLine(),s2 = br2.readLine()) { //当s1,s2能读,并且s1,s2不为空时做的操作
if (s1.equals(s2)){如果读的该行s1和s2相等
flag++;//行标志
m++;
}
else {
n=flag+1;//行加1,因为开始的行好像是设为0
System.out.println("出现不同!为第"+n+"行");
System.out.println("在第一个文件中该行为:"+s1);
System.out.println("在第二个文件中该行为:"+s2);
while(true){
System.out.print("请选择操作:1、继续比较 2、退出\n");
int x=Integer.parseInt(br.readLine());
switch (x){
case 1:continue on;
case 2:break on;
}
}
}
}
br1.close();
br2.close();
} catch (IOException e) {
e.printStackTrace(); 1837