java.lang.ArrayIndexOutOfBoundsException: 1 >= 1

java.lang.ArrayIndexOutOfBoundsException: 1 >= 1

这是怎么回事? 第一次运行一切顺利,但如果第二次执行,即使满足 for 条件也会失败:

private void actualizar_screen(){
        DefaultTableModel tabla = (DefaultTableModel) screen_table.getModel();
        int total_rows = tabla.getRowCount();
        int i=0;
        System.out.println("Total items: "+items);
        System.out.println("Total rows: "+total_rows);
        for(i=0;i<items;i++){
            System.out.println("i = "+i);
            tabla.removeRow(i);
        }
        System.out.println("Removidas "+i+" de items "+items);
}

控制台显示如下

Total items: 1
Total rows: 1
i = 0
Removidas 1 de items 1

Total items: 2
Total rows: 2
i = 0
i = 1

java.lang.ArrayIndexOutOfBoundsException: 1 >= 1

要删除的循环有问题:

Total items: 2 --> items = 2
Total rows: 2 --> tabla.getRowCount() = 2, row index 0, 1 exist
i = 0 --> then remove row index 0, so tabla.getRowCount() = 1 -> row index 0 exist
i = 1 --> then remove row index 1 --> java.lang.ArrayIndexOutOfBoundsException: index >= length 

要修复您的代码,只需使用 tabla.removeRow(0); 删除第一行。 或者使用 while 循环:

while(i < items) {
    System.out.println("i = "+ i++);
    tabla.removeRow(0);
}