ファイルを入力して、そこから印刷された文字列と double を抽出しようとすると、テキスト自体に関する情報が抽出されてしまいます。ファイルから行を出力するために、while ループに System.out.println を挿入しました。また、余分な行のテキスト情報も出力しました。次のような行を無視して、ファイルから書かれたテキストのみを取得しようとしています。
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural"
ファイルから情報を取得して文字列配列を作成できるように、これを行っています。このプログラムの目的は、情報の行 (姓 (string)、名 (string)、口座残高 (double)) を含むファイルを入力し、各行を個別に抽出し、各行の文字列を配列リストに配置し、ソートすることです。配列リスト (姓、名の順) を取得し、新しく並べ替えられた行を含む output.txt という名前のファイルを出力します。行は、姓、名、口座残高の順にフォーマットされ、それぞれの間に 1 つのスペースが入ります。行数は異なる場合があります。
入力例 (.txt ファイルから):
スミス・チャールズ 200.000
アレン・ドレイク 5000.00
アレン・トレイ 300.00
バービス ゼイク 400.00
ザンリック 6000.00
出力例 (ファイル output.txt に書き込まれます):
アレン・ドレイク 5000.00
アレン・トレイ 300.00
バービス ゼイク 400.00
スミス・チャールズ 200.000
ザンリック 6000.00
ありがとう!
public static void main(String[] args) throws IOException {
Scanner fileName = new Scanner(System.in);
String file = fileName.next();
String input;
Scanner fileinput = null;
// File inFile = new File("c:\\csc2310\\test.txt");
File inFile = new File(file);
int i = 0;
try
{
fileinput = new Scanner(inFile);
while(fileinput.hasNext())
{
i++;
System.out.println(i);
input = fileinput.nextLine();
System.out.println(input);
}
fileinput.close();
}catch(FileNotFoundException e)
{
System.out.println(e);
System.exit(1);
}
finally
{
fileinput.close();
}
}