这里有趣的小错误,希望有人能指出发生在我身上的事情。将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次来达到通过失败。 –