gpt4 book ai didi

java - 将两个带有整数的文本文件组合成一个文本文件

转载 作者:行者123 更新时间:2023-11-30 09:17:31 25 4
gpt4 key购买 nike

我需要将两个文本文件合并为一个合并的文本文件。这些文件只包含数字,然后必须按升序列出数字。我已经对其进行了编码来执行此操作,但是,我无法让它添加最后一个数字,它给了我一个数字格式异常错误。我相信这是因为我的最后一个数字没有任何可比较的东西,所以我无法将它添加到列表中。当最后一个数字也没有什么可以比较时,我不确定如何添加最后一个数字(我很确定我需要另一个 if 语句我只是不确定该怎么做)而且我不知道正确的 while 语句是什么是,但是程序使用我使用的 while 语句正确运行,没有最后一个数字。

public static void main(String[] args) 
{
FileReader file1 = null;
FileReader file2 = null;
BufferedReader readfile1 = null;
BufferedReader readfile2 = null;
FileWriter fileout = null;
PrintWriter dataout;
String fname1 = "list1.txt";
String fname2 = "list2.txt";
int md = 0;
int file1num = 0;
int file2num = 0;
String file1str;
String file2str;

try
{
file1 = new FileReader(fname1);
}
catch
(FileNotFoundException xyz)
{
System.out.println("File not found: " + fname1);
System.exit(-1);
}
catch
(IOException abc)
{
System.out.println("IOException: caught");
System.exit(-1);
}
readfile1 = new BufferedReader(file1);
try
{
readfile2 = new FileReader(fname2);
}
catch
(FileNotFoundException xyz)
{
System.out.println("File not found: " + fname2);
System.exit(-1);
}
catch
(IOException abc)
{
System.out.println("IOException: caught");
System.exit(-1);
}
readfile2 = new BufferedReader(file2);
try
{
fileout = new FileWriter("merged.txt");
}
catch(IOException adc)
{
System.out.println("file error");
System.exit(-1);
}
dataout = new PrintWriter(fileout);
file1str = file1.readLine();
file1num = Integer.parseInt(file1str);
file2str = file2.readLine();
file2num = Integer.parseInt(file2str);
while(md !=-1)
{
if(file1num<file2num)
{
md=file1num;
file1str = file1.readLine();
file1num = Integer.parseInt(file1str);
}
if(file2num<file1num)
{
md=file2num;
file2str = file2.readLine();
file2num = Integer.parseInt(file2str);
}
if(file1num==file2num)
{
md=file1num;
file1str = file1.readLine();
file1num = Integer.parseInt(file1str);
}
}

所以我知道在读取文件 1 的最后一个 int 后,它将返回一个空值,这意味着文件 2 无法将自己与其他任何内容进行比较,我相信这就是我的问题所在。问题在于 while 语句及其中包含的内容。我也不能使用任何数组或类似的东西,它必须是一个简单的读取两个文件,比较,将最小的数字添加到合并文件。

示例输入:

文件1:

1
2
3
4
6
8

文件2:

3 
5
6
8
9

预期输出:

1
2
3
3
4
5
6
6
8
8
9

最佳答案

您需要考虑当一个文件或另一个文件用完时该怎么办。

BufferedReader.readLine() 在 EOF 时返回空值,因此您将查找空值。

逻辑是这样的

str1 = read file1
num1 = parse( str1 ) //parse() should be a method that can properly handle a null
str2 = read file2 //and return something appropriate, like -1, when null
num2 = parse( str2 ) //is encountered

while str1 != null || str2 != null

if str2 == null || num1 < num2
write num1
str1 = read file1
num1 = parse( str1 )
else if str1 == null || num1 > num2
write num2
str2 = read file2
num2 = parse( str2 )
else if num1 == num2
write num1
write num2
str1 = read file1
num1 = parse( str1 )
str2 = read file2
num2 = parse( str2 )

关于java - 将两个带有整数的文本文件组合成一个文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18925988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com