這裏有趣的小錯誤,希望有人能指出發生在我身上的事情。將JTable導出到txt文件
如果JTable中有大約4個或更少的條目,我的程序可以寫入文本文件。一旦出現超過它失敗並拋出一個異常,彈出我的catch塊。不知道發生了什麼事。
public void actionPerformed(ActionEvent e)
{
try
{
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("payrollData.txt"));
PrintWriter fileWriter = new PrintWriter(bufferedWriter);
for(int i = 0; i < outputTable.getRowCount()+1; i++)
{
String headers = String.valueOf(outputTable.getColumnName(i));
fileWriter.print(headers);
fileWriter.print("\t");
}
fileWriter.println("");
for(int i=0; i<model.getRowCount(); ++i)
{
for(int j=0; j<model.getColumnCount(); ++j)
{
String s = model.getValueAt(i,j).toString();
fileWriter.print(s);
fileWriter.print("\t\t");
}
fileWriter.println("");
}
fileWriter.close();
JOptionPane.showMessageDialog(null, "Success. File saved to payrollData.txt");
}catch(Exception ex)
{
JOptionPane.showMessageDialog(null, "Failure");
}
edit:added ex.printStackTrace();它顯示了一個數組索引越界異常
你會知道爲什麼如果你放棄吃異常並閱讀錯誤信息。爲了顯示「失敗」,您將丟棄它提供的所有信息。你認爲'Exception ex'意味着什麼?這意味着你正在將一個名爲'ex'的變量交給Exception對象,並且該對象包含有關該異常的信息。用它。 –
向異常添加了printStackTrace行,並且它彈出了一個arrayIndexOutofBounds異常4> = 4 – Justiciar
而堆棧跟蹤告訴你究竟是哪行代碼拋出異常。因此,在該行上設置一個斷點,並在調試器中遍歷代碼,觀察變量值,並找出超出數組邊界的原因。我們無法爲您做到這一點,因爲我們沒有其他代碼或您正在使用的文件進行設置。這不像無效指數是20億;它是4,這意味着你只需要通過代碼4次來達到通過失敗。 –