为我在大学的实验室做一些工作 我正在创建这个函数,其中有一个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循环的开头。
有人知道如何解决这个问题吗?
答案 0 :(得分:1)
allCrates.getSize()
的预期值似乎存在一些差异。
如果allCrates.getSize()
返回2,它将转到第二个for循环,但不会运行它,因为i < allCrates.getSize() - 1
将导致错误
您可能希望使用<=
代替<
答案 1 :(得分:0)
将第二个循环中的变量i
初始化为0
而不是1
。因为如果您的getSize()
返回1,则它不会进入if
部分,在输入else
部分后,for
循环条件将评估为false,因此您的{{1}不会执行循环。