2017-11-14 8 views
-1

何が起こっているか それはすべてがうまくいけ実行されますが、それはそれはそれは条件を満たしている場合でも、失敗二回実行された場合は、最初の時間:java.lang.ArrayIndexOutOfBoundsException:1> = 1

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 
+3

あなたは 'items'(または' total_rows')カウントが無効となる行を削除する場合(あなただけの値を削除しているため)。 –

+0

'items'はどこにありますか? – shmosel

+1

変更: 'for(i = 0; i = 0; i - )' – alfasin

答えて

0

を示しループを削除する:

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); 
} 
+0

完璧な、それは不思議に働いた。私は間違いを理解しました、ありがとう – Ludwingamd

関連する問題