麻烦将文本文件参数传递给数组&在Java中将文件操作为文本输出

时间:2012-04-13 19:08:27

标签: java

很抱歉,如果我的标题令人困惑。 我有一个与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&lt;时才会发生。 2.为什么会如此&amp;我怎样才能解决这个问题?我是否将args [0]和args [1]设置为相等的文件?

1 个答案:

答案 0 :(得分:0)

运行程序时,要么不提供两个文件名参数,要么只提供其中一个。例如:

java -jar lab5.jar infile

只会设置第一个参数(字符串“infile”),第二个参数缺失