2016-08-17 76 views
0

在我的Programm中,我想刪除數組中的所有項,其中hd不在temp_unten和temp_oben之間,但for循環變爲-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

您的循環條件內應該使用i2而不是i。它應該看起來像這樣:

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

謝謝:)我搜查everywehre,但我沒有看到這失敗。 –