2016-08-17 80 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,但我没有看到这失败。 –