2016-05-24 8 views
-2

私のforループに問題があります。 forループを使用しないと正しい結果が得られます。 出力メソッドは sortPriosAtPeriodAtRessource()で、コードが静的であれば正常に動作します。 sortPriosAtPeriodAtRessourceは時には(3,4)や時には(9,8)で終了することがあるので、静的コードにすることはできません。forループは毎秒2回目の出力を食べます

私の2番目のコードのようなforループでは、 、1)および(3,1)。彼は常に第2の出力を「食べる」。私は彼がそれにアクセスすることはありませんが、私は私のループの間違いを見つけるために盲目のようだと思う。

作品:

PriosSort = datafile.sortPriosAtPeriodAtRessource(0,1); 
    System.out.println(""); 
    for(ProductRessource m : PriosSort){ 

     System.out.println("Key: " + m.getKey() + " für Makroperiode: " + 1 + " Prio: " + m.getPrioAtPeriode(j)); 
    } 
    PriosSort = datafile.sortPriosAtPeriodAtRessource(1,1); 
    System.out.println(""); 
    for(ProductRessource m : PriosSort){ 

     System.out.println("Key: " + m.getKey() + " für Makroperiode: " + 2 + " Prio: " + m.getPrioAtPeriode(j)); 
    } 

    PriosSort = datafile.sortPriosAtPeriodAtRessource(2,1); 
    System.out.println(""); 
    for(ProductRessource m : PriosSort){ 

     System.out.println("Key: " + m.getKey() + " für Makroperiode: " + 3 + " Prio: " + m.getPrioAtPeriode(j)); 
    } 

    PriosSort = datafile.sortPriosAtPeriodAtRessource(3,1); 
    System.out.println(""); 
    for(ProductRessource m : PriosSort){ 

     System.out.println("Key: " + m.getKey() + " für Makroperiode: " + 4 + " Prio: " + m.getPrioAtPeriode(j)); 
    } 

Doensnt仕事:

datafile.getAnzahlRessourcesは1可能性があり、 makroperiodencountは4

for(int i = 1; i <= datafile.getAnzahlRessources(); i++){ 

     for(int j = 0 ; j < makroperiodencount; j++){ 

      PriosSort = datafile.sortPriosAtPeriodAtRessource(j,i); 
      System.out.println(""); 
      for(ProductRessource m : PriosSort){ 
       periode = j + 1; 
       System.out.println("Key: " + m.getKey() + " für Makroperiode: " + periode + " Prio: " + m.getPrioAtPeriode(j)); 
      }    
      j++; 
     } 

    i++; 
     } 
+9

あなたダブルごとのx ++という理由です..あなたは、Jを2回インクリメント –

+3

ライン上で「一人で」ですずつ削除:条件で1時間にしてブロックの最後に1回。最後のインクリメントを削除してください。 – Frank

+0

gosh ......... iam so stupid :)))今日はもうコードを書くべきではありません。ありがとう! –

答えて

1

可能性があり、私は++余分とj ++を削除し、これを試してください:

for(int i = 1; i <= datafile.getAnzahlRessources(); i++){ 

     for(int j = 0 ; j < makroperiodencount; j++){ 

      PriosSort = datafile.sortPriosAtPeriodAtRessource(j,i); 
      System.out.println(""); 
      for(ProductRessource m : PriosSort){ 
       periode = j + 1; 
       System.out.println("Key: " + m.getKey() + " für Makroperiode: " + periode + " Prio: " + m.getPrioAtPeriode(j)); 
      }    
     } 

     } 
0

あなたダブルINC iとj

for(int i = 1; i <= datafile.getAnzahlRessources(); i++){ 

    for(int j = 0 ; j < makroperiodencount; j++){ 

     PriosSort = datafile.sortPriosAtPeriodAtRessource(j,i); 
     System.out.println(""); 
     for(ProductRessource m : PriosSort){ 
      periode = j + 1; 
      System.out.println("Key: " + m.getKey() + " für Makroperiode: " + periode + " Prio: " + m.getPrioAtPeriode(j)); 
     }    

    } 
    } 
関連する問題