2016-08-17 2 views
0

私のプログラムでは、hdがtemp_untenとtemp_obenの間にない配列からすべての項目を削除したいのですが、for-loopは-1になり、これが失敗します(私は `^ ' :スレッドでJava for-loopはマイナスになりますか?

例外 "AWT-EventQueueの-0" java.lang.ArrayIndexOutOfBoundsException:-1

if (hd) { 
     int temp_unten = Integer.parseInt(spnHDUnten.getValue() + ""); 
     int temp_oben = Integer.parseInt(spnHDOben.getValue() + ""); 

     switch (cmbHDOben.getSelectedItem() + "") { 
      case "MB": 

       break; 

      case "GB": 
       temp_oben = temp_oben * 1000; 
       break; 

      case "TB": 
       temp_oben = temp_oben * 1000 * 1000; 
       break; 
     } 
     switch (cmbHDUnten.getSelectedItem() + "") { 
      case "MB": 

       break; 

      case "GB": 
       temp_unten = temp_unten * 1000; 
       break; 

      case "TB": 
       temp_unten = temp_unten * 1000 * 1000; 
       break; 
     } 

     if (!(temp_oben < temp_unten)) { 
      for (int i = zutreffendeObjektnummern.size() - 1; i >= 0; i--) { 

       for (int i2 = GUI.objekte_objekt_ID.size() - 1; i >= 0; i2--) { 
    ^   if (!(GUI.hd.get(i2).replaceAll("[^0-9.,]+", "").equalsIgnoreCase("")) && Integer.parseInt(GUI.objekte_objekt_ID.get(i2).replaceAll("[^0-9.,]+", "")) == Integer.parseInt(zutreffendeObjektnummern.get(i).replaceAll("[^0-9.,]+", ""))) { 

         if (Integer.parseInt(GUI.hd.get(i2).replaceAll("[^0-9.,]+", "")) < temp_unten || Integer.parseInt(GUI.hd.get(i2).replaceAll("[^0-9.,]+", "")) > temp_oben) { 
          zutreffendeObjektnummern.remove(i); 
         } 

        } 
       } 

      } 

     } else { 
      JOptionPane.showMessageDialog(this, "Von/Bis muss beim Auswahlen von Spannen beachtet werden!", "Fehlerhafte Eingabe", JOptionPane.INFORMATION_MESSAGE); 
     } 

    } 

はあなたの助けをありがとう:)

+3

'i2' – RobAu

答えて

1

をループ条件のためのあなたのインナーを使用する必要がありますiの代わりに3210。

for (int i2 = GUI.objekte_objekt_ID.size() - 1; i2 >= 0; i2--) 
+0

のためのあなたの間違い' i'私はeverywehreを検索するが、私は、これは失敗見ていない:)ありがとう:それは次のようになります。 –

関連する問題