2011-11-11 14 views
-2

簡單地說,這個程序將兩個包含座標的數組合併成一個更大的數組,唯一的問題是在我的數組中有很多[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的長度等於ROWS

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<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]; 
} 

而且,正如其他人所指出的,你需要改變counter = counter++counter++