2011-11-11 6 views
-2

このプログラムは、座標を含む2つの配列を1つの大きな配列にマージしていますが、唯一の問題は配列内に[0] [0]の値がたくさんあります。 NOT 0、0/値が問題の場合は?

counter = 0; 

    int merged[][] = new int[lupper.length + llower.length][COLUMNS]; 


    for (int i=0; i<ROWS; i++){ 
     merged[i][0] = lupper[i][0]; 
     merged[i][1] = lupper[i][1]; 


     for (int j=lupper.length; j<ROWS; j++){ 
      merged[j][0] = llower[j][0]; 
      merged[j][1] = llower[j][1]; 
     } 
    } 

    for (int i=0; i<merged.length; i++){ 
     if (merged[i][0] == merged[0][0]){ 
      counter = counter++; 
     } 
     if (merged[i][1] == merged[0][0]){ 
      counter = counter++; 
     } 
    } 

なぜカウンタは0を返し続けますか?あなたはあなたのコードを持っている

+1

ここでの質問は? – Pratik

+0

これに質問がありますか? –

+0

主な問題カウンタは、0を継続的に返します。 –

答えて

4

counter = counter++; 

それcounter値をインクリメントしません。代わりに試すことができます。

counter++; 
+0

これは本当に問題を解決したので、とても簡単です... –

2

あなたのカウンターでの問題は、それが言うべきことである。

counter++; 

とされていない:

counter = counter++; 
この理由は、それが増加することである

それが評価された後の右側のカウンタの値。したがって、カウンタの古い値が左側のカウンタに割り当てられる。これはカウンターが常に同じであることを意味します。

1

llowerループが間違っています。ループがlupperのループにネストしてはならず、インデックスが間違っています。 lupperの長さは、他の人があなたがcounter++counter = counter++を変更する必要が指摘したように、また

for (int i=0; i<ROWS; i++){ 
    merged[i][0] = lupper[i][0]; 
    merged[i][1] = lupper[i][1]; 
} 


for (int j=0; j<ROWS; j++){ 
    merged[j+ROWS][0] = llower[j][0]; 
    merged[j+ROWS][1] = llower[j][1]; 
} 

...これを試してみてくださいROWS

for (int j=lupper.length; j<ROWS; j++){ 
     merged[j][0] = llower[j][0]; 
     merged[j][1] = llower[j][1]; 
    } 

に等しいので、次のコードは、すべてのループしません

関連する問題