【发布时间】:2020-09-24 23:49:20
【问题描述】:
我有这个学校项目。有一个包含化学元素列表的 csv 文件。我必须阅读它,添加到数组列表并打印出来。问题是,从这个文件中读取的这些行的大小不同,例如:
- 锇,76,Os,190.20,5773.16,3273.16,22600,678.39,26.80,
- 氡,86,Rn,222.02,
而我的代码,看起来像这样
static{
try {
Scanner scanner = new Scanner(new FileReader("elements.csv"));
String title = scanner.nextLine();
while(scanner.hasNext()){
String[] line = scanner.nextLine().split(",");
ChemicalElement chemicalElement = new ChemicalElement(line[0],Integer.parseInt(line[1]),line[2],Double.parseDouble(line[3]),Double.parseDouble(line[4]),Double.parseDouble(line[5]),
Double.parseDouble(line[6]),Double.parseDouble(line[7]),Double.parseDouble(line[8]));
chemicalElements.add(chemicalElement);
}
//(String element, int number, String symbol, double weight, double boil, double melt, double density, double vapour, double fusion)
} catch (FileNotFoundException ex) {
System.out.println(ex.getMessage());
}
}
打印出 java.lang.ExceptionInInitializerError
java.lang.ArrayIndexOutOfBoundsException
关于如何处理它的任何想法?请... 是因为线长不同还是这里有其他问题?
构造函数:
public ChemicalElement(String element, int number, String symbol, double weight, double boil, double melt, double density, double vapour, double fusion){
this.number = number;
this.symbol = symbol;
this.weight = weight;
this.boil = boil;
this.melt = melt;
this.density = density;
this.vapour = vapour;
this.fusion = fusion;
}
还有例外:
运行: 线程“主”java.lang.ExceptionInInitializerError 中的异常 在 chemistry.Chemistry.allElements(Chemistry.java:21) 在 chemistry.Chemistry.main(Chemistry.java:30) 原因: java.lang.ArrayIndexOutOfBoundsException:6 在 化学.ChemicalElementDAO.(ChemicalElementDAO.java:51) ... 还有 2 个 C:\Users\tatja\AppData\Local\NetBeans\Cache\11.2\executor-sn-ps\run.xml:111: 执行此行时发生以下错误: C:\Users\tatja\AppData\Local\NetBeans\Cache\11.2\executor-sn-ps\run.xml:94: Java 返回:1 BUILD FAILED(总时间:0 秒)
【问题讨论】:
-
你是什么意思?是否要全部合并?
-
我想将列表中的所有行打印到屏幕上,就是这样。
-
您的所有代码都在静态初始化程序块中是否有原因?
-
其实没有,老师说要在课堂上写这个类似的例子