读入文件并比较每个元素



我有两个给定的文件,其中每行由四个元素组成,这些元素由'","分隔。我想读入两个文件以比较两者的行,但我也想列出它们。两个文件中的大多数行都是相同的,但也有一些行只存在于两个文件中的一个中,或者它们有一个元素不同。我的元素类如下:

public class Student {
    public String name;
    public Student (String name) {
        this.name = name;
    }
    public static String[] toString(String name)
    {
        String s1 = ""; String s2 = ""; String s3 = ""; String s4 = "";
        int position = 0;
        for(int i = 0; name.charAt(i) != name.length(); i++)
        {
            if (name.charAt(i) == ',') {++position; continue;}
            if (position == 0) s1 += name.charAt(i);
            if (position == 1) s2 += name.charAt(i);
            if (position == 2) s3 += name.charAt(i);
            if (position == 3) s4 += name.charAt(i);
        }
        String[] s = new String[4];
        return s;
    }
}

还有一个CSVReader,我还没有完成,我想:

public class CSVReader {
    /**
     * This method reads in a *.csv file and saves every entry as elements 
     * from a twodimensional array.
     *
     * @param filename track to the file Pfad zur Datei, example 
     * ".Root/test/echo.csv"
     * @return {@code String[][] s}  where {@code s[i][j]}
     * is the j-th value in the i-th line
     */
    public String[][] readCSV(String filename) {
        ArrayList<String[]> result = new ArrayList<>();
        BufferedReader br = null;
        String line = "";
        String cvsSplitBy = ",";
        StringBuilder  stringBuilder = new StringBuilder();
        try {
            br = new BufferedReader(new FileReader(filename));
            while ((line = br.readLine()) != null) {
                result.add(line.split(cvsSplitBy));
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return result.toArray(new String[result.size()][]);
    }
}

我的问题是如何在主类中使用CSVReader:

public class Main {
    public static void main(String[] args) {
        /**
         * Read in "./Root/files/echo.csv" und "./Root/files/file1.csv"
         * and output the correspondent warning on System.out
         */
        String file1 = new String("");
        String echo = "";
        file1 = CSVReader("./Root/files/file1.csv"); /*cannot find 
        symbol */
        echo = CSVReader("./Root/files/echo.csv"); // same error
    }
}

感谢您的帮助!

CSVReader类中的readCsv方法设为静态,以便可以在任何地方调用它:

public static String[][] readCSV(String filename)

现在您可以拨打CSVReader.readCsv

file1 = CSVReader.readCsv("./Root/files/file1.csv");
echo = CSVReader.readCsv("./Root/files/echo.csv");

在这一行

file1 = CSVReader("./Root/files/file1.csv"); /*cannot find symbol */Java编译器"seys"你无法解决什么是CSVReader
你的语法就像你托盘来调用一个函数。

一种解决方案是这个代码狙击

CSVReader csvReader = new CSVReader();
file1 = csvReader.readCsv("./Root/files/file1.csv");
echo = csvReader.readCsv("./Root/files/echo.csv");

注意:csvReader是一个变量。

另一种解决方案是将静态修饰符添加到方法readCsv。在 tat 的情况下,代码将如下所示(没有构造函数调用(

file1 = CSVReader.readCsv("./Root/files/file1.csv");
echo = CSVReader.readCsv("./Root/files/echo.csv");

最新更新