2017-02-26 151 views
0

我的代碼工作正常,但我卡在一個部分。我希望能夠打印每個交換,而不是打印最終的分類。有人能幫我嗎 ?通過每次通過打印陣列

public class SelectionSort { 

    public static void main(String[] args) { 
     int []numbers = {10,5,7,9,1,0,4,6,11,14}; 
     numSort(numbers); 
     printArray(numbers); 
    } 
    public static int[] numSort(int[] A) { 
     for (int i = 0; i <A.length -1 ; i++) { 
      for (int j=0; j<A.length-1-i; j++) { 
       if(A[j] > A [j+1]) { 
        int temp = A[j+1]; 
        A[j+1] = A[j]; 
        A[j]=temp; 
       } 

      } 
     } 
     return A; 
    } 
    public static void printArray(int[] A) { 
     for (int i = 0; i<A.length; i++) { 
      System.out.println(A[i]); 
     } 
    } 
} 
+3

這是什麼問題? – shmosel

+0

我以爲你的代碼工作正常? – SaggingRufus

+2

[爲什麼「有人可以幫助我?」不是一個實際的問題?](http://meta.stackoverflow.com/q/284236) – EJoshuaS

回答

2

所有你必須爲了打印後陣每個交換是調用printArray()方法每次交換後,像這樣的事:

public static int[] numSort(int[] A) { 
    for (int i = 0; i <A.length -1 ; i++) { 
     for (int j=0; j<A.length-1-i; j++) { 
      if(A[j] > A [j+1]) { 
       int temp = A[j+1]; 
       A[j+1] = A[j]; 
       A[j]=temp; 
       printArray(A); 
      } 
     } 
    } 
    return A; 
} 

然而,您的打印方法使得它,使得它在連續的數組之間很難分辨,因爲你在一個新行上打印每個數字。要解決此問題,您可以簡單地使用本機.toString()方法,或者可以在同一行上打印所有值,並用空格或逗號分隔,最後使用\n或空的System.out.println()移至下一行。

+0

我正在編輯帖子以解決提問者可能與我有關的潛在問題解決方案 – UnknowableIneffable

+0

謝謝,我有一個小問題,數字打印垂直,而不是水平。如何修復 – Jeff

+1

這是因爲您在打印方法中爲陣列中的每個數字創建了一個新行。閱讀我解答的答案的底部。 – UnknowableIneffable