gpt4 book ai didi

java - ArrayIndexOutOfBoundsException : 2 >= 1 on for each

转载 作者:行者123 更新时间:2023-12-01 11:15:56 26 4
gpt4 key购买 nike

我是 Java 新手,正在编写一个使用一些 JTable 的程序。我有一个按钮可以删除选定的行,它执行以下操作:

public static void removerows() {
int[] row_indexes = TableCA.table.getSelectedRows();
for(int i=0;i<row_indexes.length;i++) {
TableCA.model.removeRow(row_indexes[i]);
}
}

但是当它执行时,我收到此错误:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2 >= 1
at java.util.Vector.removeElementAt(Vector.java:554)
at javax.swing.table.DefaultTableModel.removeRow(DefaultTableModel.java:463)
at fr.diagamma.project.PanelCaisse.removerows(PanelCaisse.java:78)

我搜索了很多,但没有找到任何关于 OutOfBounds 案例的信息。感谢您的帮助!

最佳答案

我的建议是颠倒循环的顺序:

public static void removerows() {
int[] row_indexes = TableCA.table.getSelectedRows();
for(int i=row_indexes.length - 1; i >= 0; i--) {
TableCA.model.removeRow(row_indexes[i]);
}
}

这从最后一个元素开始并删除,直到到达第一个元素。

因为,除非你的 row_indexes 只有 1 个元素,否则它有两种错误:

  1. removeRow() 之后,row_indexes 中的索引不再更新。
  2. 如果row_indexes按递增顺序排列,很容易引发OutOfBoundException。

关于java - ArrayIndexOutOfBoundsException : 2 >= 1 on for each,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31821999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com