在将每一行解析为对象之后,我没有正确地将文本文件读取到ArrayList中



我正在尝试读取txt文件,然后对其进行解析,并使每一行都成为ArrayList中的一个新对象。我一直告诉我它是空的,我不知道为什么。我已经很久没有使用java了,所以我确信它很愚蠢。

public class AccessibilityTest {
private String cat;
private String googErr;
private String waveErr;
private String sortErr;
private String lintErr;
private String desc;

public AccessibilityTest(String cat,String googErr,String waveErr,String sortErr,String lintErr, String desc){
this.cat = cat;
this.googErr = googErr;
this.waveErr = waveErr;
this.sortErr = sortErr;
this.lintErr = lintErr;
this.desc = desc;
}

public static void main(String[] args) {
AccessibilityResults.readTxtFile("a11yCheckersResults.txt");//this is one place im getting the error and its me trying to target that txt file
System.out.println();
}

public String getCategory() {
return cat;
}
public String getGoogleResult() {
return googErr;
}
public String getWaveResult() {
return waveErr;
}
public String getSortsiteResult() {
return sortErr;
}
public String getAslintResult() {
return lintErr;
}
public String getDescription() {
return desc;
}

@Override
public String toString(){
return "fsdfse"+ getCategory() + getGoogleResult()+ getWaveResult()+ getSortsiteResult() + getAslintResult() + getDescription();
}
}

这是我实际解析txt文件并创建对象的另一个文件。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.*;

public class AccessibilityResults {

private static ArrayList<AccessibilityTest> list;

public AccessibilityResults() {
list = new ArrayList<>();
}

public static void readTxtFile(String fileName){
try(Scanner reader = new Scanner(new File(fileName))){
while(reader.hasNextLine()){
String cat = reader.next();
String err1 = reader.next();
String err2 = reader.next();
String err3 = reader.next();
String err4 = reader.next();
String desc = reader.nextLine();
list.add(new AccessibilityTest(cat, err1, err2, err3, err4,desc));//this is one spot im getting the error

}
} catch(FileNotFoundException e){
System.out.println("File not found: " + fileName);
}`enter code here`
}
}

//txt file

//a11yCheckersResults.txt

原因是listreadTxtFile静态方法,但初始化listreadTxtFile()不是static,并且在java中,static属性和方法将在没有static之前初始化,这导致它

要解决此问题,有几个选项:一个选项只是删除listreadTxtFile()中的所有static,另一个选项是在声明private static ArrayList<AccessibilityTest> list = new ArrayList<>();时初始化list

// static
private static ArrayList<AccessibilityTest> list;
// no static,so list will always be null
public AccessibilityResults() {
list = new ArrayList<>();
}
// static
public static void readTxtFile(String fileName){
try(Scanner reader = new Scanner(new File(fileName))){
while(reader.hasNextLine()){
String cat = reader.next();
String err1 = reader.next();
String err2 = reader.next();
String err3 = reader.next();
String err4 = reader.next();
String desc = reader.nextLine();
list.add(new AccessibilityTest(cat, err1, err2, err3, err4,desc));//this is one spot im getting the error
}
} catch(FileNotFoundException e){
System.out.println("File not found: " + fileName);
}
}
}

最新更新