2 つのテキスト ファイルを 1 つの結合テキスト ファイルに結合する必要があります。ファイルは数字のみで構成され、数字は昇順でリストする必要があります。これを行うようにコーディングしましたが、最後の数値を追加することができず、numberformatexception エラーが発生します。これは、最後の番号に比較対象がなく、リストに追加できないためだと思います。それ自体を比較するものが何もない場合、最後の数値を追加する方法がわかりません(別の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 が読み取られた後、null が返されることはわかっています。つまり、ファイル 2 はそれ自体を他のものと比較することはできず、それが私の問題の原因であると考えています。問題は while 文とその内容にあります。また、配列などを使用することはできません。2 つのファイルを単純に読み取り、比較して、最小の数値をマージ ファイルに追加する必要があります。
入力例:
ファイル1:
1
2
3
4
6
8
ファイル2:
3
5
6
8
9
期待される出力:
1
2
3
3
4
5
6
6
8
8
9