0

タイトルが紛らわしくてすみません。私は 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] を等しいファイルに設定しますか?

4

1 に答える 1

0

プログラムの実行時に 2 つのファイル名引数を指定しないか、1 つだけ指定します。例えば:

java -jar lab5.jar infile

最初の引数のみを(文字列「infile」に)設定し、2番目の引数がありません

于 2012-04-13T19:20:02.557 に答える