タイトルが紛らわしくてすみません。私は Java に関係する課題を抱えています。この割り当ての目的は、州と都市の入力ファイルを読み取り、そのデータを 2D 配列 (州用と都市用 (重複なし)) に格納するプログラムを作成することです。その後、itt はアルファベット順に出力します。それが紛らわしい場合は、これがどのように見えるかのサンプルです。
サンプル入力ファイル
Hamilton, Ontario
Montreal, Quebec
Vancouver, British Columbia
Sarnia, Ontario
Sherbrooke, Quebec
Winnipeg, Manitoba
Red Deer, Alberta
Edmonton, Alberta
Niagara Falls, Ontario
Port Elgin, Ontario
Victoria, British Columbia
Truro, Nova Scotia
Regina, Saskatchewan
Kingston, Ontario
Fredricton, New Brunswick
Grand Prarie, Alberta
Calgary, Alberta
Collingwood, Ontario
サンプル出力ファイル
British Columbia: Vancouver, Victoria
Alberta: Calgary, Edmonton, Grand Prarie, Red Deer
Saskatchewan: Regina
Manitoba: Winnipeg
Ontario: Collingwood, Hamilton, Kingston, Niagara Falls, Port Elgin, Sarnia
Quebec: Montreal, Sherbrooke
New Brunswick: Fredricton
Nova Scotia: Truro
これが私のメインクラスです
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
if (args.length < 2) {
System.err.println("Usage: java -jar lab5.jar infile outfile");
System.exit(99);
}
Munge dataSorter = new Munge(args[0], args[1]);
dataSorter.openFiles();
dataSorter.readRecords();
dataSorter.writeRecords();
dataSorter.closeFiles();
}
}
ここに私の Munge クラスがあります。
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Formatter;
import java.util.Scanner;
public class Munge {
private String inputFileName, outputFileName;
private Scanner inputFile;
private Formatter outputFile;
private int line = 0;
private String[] data;
public Munge(String inFileName, String outFileName) {
this.inputFileName = inFileName;
this.outputFileName = outFileName;
data = new String[100];
}
public void openFiles() throws FileNotFoundException {
File newFile = new File(inputFileName);
}
public void readRecords() {
while (inputFile.hasNext()) {
data[line] = inputFile.nextLine();
System.out.println(data[line]);
line++;
}
}
public void writeRecords() {
for (int i = 0; i < line; i++) {
String done[] = data[i].split(", ");
Arrays.sort(done);
for (int j = 0; j < done.length; j++) {
outputFile.format("%s\r\n", done[j]);
}
}
}
public void closeFiles() {
if (inputFile != null) {
inputFile.close();
}
if (outputFile != null) {
outputFile.close();
}
}
}
私の問題は、主にプログラムを実行しようとしたときに発生します。args.length < 2 の場合にのみ発生すると想定されるメッセージが表示され続けます。なぜそうなのか、どうすれば修正できますか? args[0] と args[1] を等しいファイルに設定しますか?