0

大学の研究室でいくつかの作業を行っているときに、別のループ内に for ループがあるこの関数を作成しています。

メソッドが何に使用されるかを知ることは重要ではありません。プログラムが 2 番目の 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 ループの先頭に戻ります。

誰でもこの問題を解決する方法を知っていますか?

4

2 に答える 2

1

の期待値とは若干の不一致があるようですallCrates.getSize()

2 を返す場合allCrates.getSize()、2 番目の for ループに進みますが、実行されず、i < allCrates.getSize() - 1結果が false になります。

<=代わりに使用したい場合があります<

于 2012-11-03T16:47:52.727 に答える
0

i2 番目のループで変数を0ではなく に初期化します1getSize()1 が返された場合、パーツに入らず、パーツifに入った後にループ条件が false と評価されるため、ループは実行されません。elseforfor

于 2012-11-03T16:49:55.600 に答える