[英]Read-in file and compare each element
我有兩個給定的文件,其中每行由四個元素組成,這些元素由','分隔。 我想讀入兩個文件以便比較兩者的行,但我也想列出它們。 兩個文件中的大多數行都是相同的,但是在兩個文件之一中也存在行,或者它們具有一個不同的元素。 我對這些元素的了解如下:
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
方法CSVReader
靜態,以便可以在任何地方調用它:
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編譯器“困擾”您無法解析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");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.