2017-02-26 82 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