我正在尝试读取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
原因是list
和readTxtFile
是静态方法,但初始化list
的readTxtFile()
不是static
,并且在java中,static
属性和方法将在没有static
之前初始化,这导致它
要解决此问题,有几个选项:一个选项只是删除list
和readTxtFile()
中的所有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);
}
}
}