2017-02-26 11 views
0

私のコードは正常に動作しますが、私は1つの部分で立ち往生しています。最後のソートを印刷する代わりに、すべてのスワップを印刷できるようにしたい。誰か助けてくれますか?各パスを介して配列を印刷

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

これは、あなたのprintメソッドであなたの配列の各数値に対して新しい行を作るからです。ソリューションの私の答えの一番下を読んでください。 – UnknowableIneffable