我的程序没有进入我的第二个for循环

时间:2012-11-03 16:43:55

标签: oop loops for-loop

为我在大学的实验室做一些工作 我正在创建这个函数,其中有一个for循环在另一个。

了解该方法的用途并不重要。我只是无法弄清楚为什么程序没有进入第二个for循环。这是代码:

public void worseFit(int[] array){
  int tempPosition = -1;
  int tempWeight = 101 ;
  for (int x = 0; x < (array.length - 1); x++){
    if (allCrates.getSize() < 1){
      Crate crate = new Crate();
      crate.addWeight(array[0]);
      allCrates.add(crate);
    } else{
      for( int i = 1; i < (allCrates.getSize() - 1); i++ ){
        Crate element = allCrates.getElement(i);
        int weight = element.getTotalWeight();
        if (weight < tempWeight){
          tempWeight = weight;
          tempPosition = i;
          Crate crate = new Crate();    
          if (weight + tempWeight <= 100){ 
            crate.addWeight(weight + tempWeight);
            allCrates.setElement(i, crate);
          } else {
            crate.addWeight(weight);
            allCrates.setElement(allCrates.getSize(), crate);
          } // if
        } // if 
      } // for
    } // if
  } // for
} // worseFit

一旦程序进入代码的else部分,它就会顺利进行 回到第一个for循环的开头。

有人知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

allCrates.getSize()的预期值似乎存在一些差异。

如果allCrates.getSize()返回2,它将转到第二个for循环,但不会运行它,因为i < allCrates.getSize() - 1将导致错误

您可能希望使用<=代替<

答案 1 :(得分:0)

将第二个循环中的变量i初始化为0而不是1。因为如果您的getSize()返回1,则它不会进入if部分,在输入else部分后,for循环条件将评估为false,因此您的{{1}不会执行循环。