2015-05-03 22 views
-2

我有一些代碼不起作用,我在錯誤處放置了一個箭頭。我在while循環中得到一個錯誤

我想在(j> 0)AND(數組在j-1> Min)時做一個循環。

我在做什麼錯?爲什麼我不斷收到錯誤?

請幫忙!並感謝您的閱讀!這可能只是一個簡單的愚蠢的錯誤。它告訴我一個是int,另一個是布爾值,我該怎麼辦?

private static int[] dorp(int[] myArray){ 
    int n = myArray.length; 
    int swap; 
    for(int i = n-1; i >= 0; i--){ 
     int j = i; 
     int min = myArray[i]; 
     --> while ((j = 0) && (myArray[j-1] > min)) { 
     myArray[j]=myArray[j-1]; 
     j=j-1; 
      } 
     j=min; 
     } 
    return myArray; 
} 

新代碼

int myArray[] = {1, 6, -1, 7, 83, 19, -3, 6, 2, 4, 6, 32, 66, -9}; 
    int n = myArray.length; 
    myArray = doop(myArray); 
    for (int i = 0; i < n; i++) { 
     System.out.println(myArray[i]); 
    } 
} 

private static int[] doop(int[] myArray) { 
    int n = myArray.length; 
    int swap; 
    for (int i = n - 1; i >= 0; i--) { 
     int j = i; 
     int min = myArray[i]; 
     while ((j == 0) && (myArray[j - 1] <= min)) { 
      myArray[j] = myArray[j - 1]; 
      j = j - 1; 
     } 
     myArray[j] = min; 
    } 
    return myArray; 
} 

回答

0
(j = 0) 

成果轉化爲int和int &&boolean不會導致成boolean,你想讓它j==0如果你的目的是要與添加比較0

+0

謝謝你,我做到了這一點,我非常感謝,我會在後面保留這些知識,但是現在我得到了錯誤。異常主線程。你能告訴我什麼是錯的嗎?它假設對所有這些東西進行分類。 – user2237848

+0

我在問題中添加了新的代碼行。 – user2237848

0

你的時候總是虛假的。 j = 0表示將0值賦給j。你需要改變它像

while ((j == 0) && (myArray[j-1] > min)) { 
+0

Thx也可以回答。 – user2237848

0

因爲數組通過引用所以任何變化傳遞到內部myArray的元素將功能

新杜朋外面看到你不需要返回數組功能將是

private static void doop(myArray) { 
    int temp, i, j;     
    for (i = 1; i < myArray.length; i++){ 
     temp = myArray[ i ]; 
     //for(j = i - 1; (j >= 0) && (myArray[ j ] < temp); j--) // sort array in descending order 
     for(j = i - 1; (j >= 0) && (myArray[ j ] > temp); j--) // sort array in ascending order 
     { 
      myArray[ j+1 ] = myArray[ j ]; 
     } 
     myArray[ j+1 ] = temp;  
    } 

}