2015-11-08 151 views
-1

我試圖計算一個數組中的反轉次數。當它應該是4時,我得到3的結果。這是我的代碼。爲什麼我沒有得到正確的輸出?

int[] array1 = new int[5]; 
array1[0] = 3; 
array1[1] = 7; 
array1[2] = 10; 
array1[3] = 6; 
array1[4] = 4; 

int count = 0; 
for(int i =0;i<array1.length;i++){ 

    for(int j =i+1;j<array1.length;j++){ 

     if(array1[i]> array1[j]){ 

     count++; 
    } 
} 
} 
System.out.println(count); 

任何人都知道爲什麼要這樣做?感謝

+2

ArrayIndexOutOfBoundException here。你將'i'遞增到array1.length。它應該是'<'不是'<=' –

+0

爲什麼i ++ j ++裏面有for循環。請檢查循環增量邏輯。 – bakki

+0

感謝您的提示,我改變了它,但我仍然得到3 – lc112

回答

0

刪除j ++和i ++。還要將j的初始位置更改爲i + 1而不是0.

int[] array1 = new int[5]; 
array1[0] = 3; 
array1[1] = 7; 
array1[2] = 10; 
array1[3] = 6; 
array1[4] = 4; 

int count = 0; 
for(int i =0;i<array1.length;i++){ 

    for(int j=i+1;j<array1.length;j++){ 

     if(array1[i]> array1[j]){ 
      count++; 
     } 

    } 
} 
System.out.println(count); 
+0

我已經完成了你之前提出的建議,並且我已經獲得了6個,但是將j從1更改爲i + 1它的工作原理:d非常感謝 – lc112

0

i++j++指數遞增不宜反覆在你for循環的身體,因爲他們在同一行的for循環的條件已經存在。

相關問題