2 回答

TA貢獻(xiàn)1909條經(jīng)驗 獲得超7個贊
我檢查了如果文件不存在,將使用適當(dāng)?shù)哪0鍎?chuàng)建一個新文件作為冗余。但!這并不意味著模板中有任何值來加載 ArrayList。
它在我的Windows 7計算機(jī)(開發(fā)計算機(jī))上運行的唯一原因是因為它有一個測試文件,模板中已經(jīng)有數(shù)字,所以它從來沒有像我的Windows 10(測試計算機(jī))那樣從頭開始運行。
我必須添加一個方法或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貢獻(xiàn)1804條經(jīng)驗 獲得超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 文件)讀取數(shù)據(jù)時,引入安全檢查始終是一個好主意。
一個更好的主意是將異常處理(或:預(yù)期意外處理代碼)放在其中,這是您讀?。赡懿豢煽康模┩獠吭吹姆椒?。在此上下文中,外部源意味著:不受 Java 編譯器控制。getCertNumbers
添加回答
舉報