为什么读取txt格式的文件时出错?

问题描述 投票:0回答:1
static String[][] parseCSV(String fileName) throws FileNotFoundException, IOException {
    int fields;
    int lines;    

    try (BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\hp\\Documents\\Documents\\ID3ALGORITHM\\playtennis.txt"))) {
        String s = br.readLine();
        fields = 1;
        int index = 0;

        while ((index = s.indexOf(',', index) + 1) > 0)
            fields++;

        lines = 1;

        while (br.readLine() != null) 
            lines++;
    }
    String[][] data = new String[lines][fields];
    Scanner sc = new Scanner(new File("C:\\Users\\hp\\Documents\\Documents\\ID3ALGORITHM\\playtennis2.txt"));
    sc.useDelimiter("[,\n]");

    for (int l = 0; l < lines; l++)

        for (int f = 0; f < fields; f++)
            if (sc.hasNext())
                data[l][f] = sc.next();
            else
                error("Scan error in " + "playtennis2.txt" + " at " + l + ":" + f);

    sc.close();
    return data;
}

public static void main(String[] args) throws FileNotFoundException,IOException {
    if (args.length != 2)
        error("Expected 2 arguments: file names of training and test data");
    String[][] trainingData = parseCSV(args[0]);
    String[][] testData = parseCSV(args[1]);
    ID3ALGO classifier = new ID3ALGO();
    classifier.train(trainingData);
    classifier.printTree();
    classifier.classify(testData);         
}

收到的错误:预期有2个参数:训练和测试数据的文件名。

为什么以及会发生什么? parseCSV的参数由同一文件夹中的两个不同文件组成,系统无法读取该文件。

java readfile
1个回答
1
投票

您提到的错误是由主要方法String[] args的长度小于2引起的。

如果您自己编写了此程序,您将意识到文件路径是从命令行传递到main方法中的。

我给你一个简单的例子。

简单的Application.java文件:

public class Application{

    public static void main(String[] args){

        if(args.length == 2) {

            System.out.println("2 args received");
        }

        System.out.println(args[0]);
        System.out.println(args[1]);

    }


}
  1. 使用javac Application.java在命令行上编译
  2. 运行程序java Application /root/dir1/dir2/file.txt /root/dir1/dir2/file2.txt
  3. [arg[0]现在是/root/dir1/dir2/file.txt
  4. [arg[1]现在是/root/dir1/dir2/file.txt

输出:

2 args received
/root/dir1/dir2/file.txt
/root/dir1/dir2/file2.txt
© www.soinside.com 2019 - 2024. All rights reserved.