2 回答
TA贡献1909条经验 获得超7个赞
我检查了如果文件不存在,将使用适当的模板创建一个新文件作为冗余。但!这并不意味着模板中有任何值来加载 ArrayList。
它在我的Windows 7计算机(开发计算机)上运行的唯一原因是因为它有一个测试文件,模板中已经有数字,所以它从来没有像我的Windows 10(测试计算机)那样从头开始运行。
我必须添加一个方法或if语句说:
if(certNumbersFound != null && certNumbersFound.size() > 0)
{
//Write code that can use the ArrayList certNumbersFound
//because there's values in the file
}
else
{
//Write code that doesn't use the ArrayList certNumbersFound
//because there's no values in the file.
}
我觉得自己太笨了。谢谢大家。我很抱歉浪费你的时间。
TA贡献1804条经验 获得超3个赞
ArrayList.get如果索引超出范围,则抛出。在您的情况下,可能小于零。IndexOutOfBoundsException
要避免这种情况,请在代码中添加检查:
ArrayList<Integer> certNumbersFound = workbook.getCertNumbers();
if (certNumbersFound.size() >= 1) {
int lastNumber = certNumbersFound.get(certNumbersFound.size()-1);
//more code
}
else {
//handle situation according to your needs
//e.g. throw exception, log something or write to err:
System.err.println("Invalid size: " + certNumbersFound.size());
}
从外部源(在本例中为 Excel 文件)读取数据时,引入安全检查始终是一个好主意。
一个更好的主意是将异常处理(或:预期意外处理代码)放在其中,这是您读取(可能不可靠的)外部源的方法。在此上下文中,外部源意味着:不受 Java 编译器控制。getCertNumbers
添加回答
举报