0

プログラミング入門クラスの課題をやっていて、それはバブル ソートです。コードに欠陥があるかもしれませんが、その問題を解決してくれる人を探しているわけではありません。私の問題は、印刷しようとしていることです。「public static void sort(int[] array)」という行で、void メソッドによってメソッドを定義する必要があるという条件が与えられました。したがって、インポート配列を試して使用した場合System.out.println(Arrays.toString(sort(array)));私のメイン メソッドでは、void が適用されないというコンパイラ エラーが発生するため、機能しません。main メソッドでループさせようとすると、互換性のない型があることがわかります。見つかったのは void で、必要なのは int[] ですが、代入の元の条件は void メソッドを使用することです。そうは言っても、テスト目的でメソッドをvoidからint []に変更し、割り当てをvoidとして送信する必要がありますか、またはこのコードの出力をvoidで出力する方法はありますか?それ?

public static void sort(int[] array)
      { 
        int[] y = new int[array.length];
        for(int i = 0; i<=array.length-1; i++)
        {
          for(int j = i+1; i<=array.length-1; j++)
          {
            if(array[i] < array[j]){
              y[i] = array[j];
            }
            if(array[i] >= array[j]){
              y[i] = array[i]; 
          }  
        }
          for(int k = 0; k<y.length; k++){
          System.out.println(y[k]);
          }
      } 
    } //end of sort method
4

4 に答える 4

2

問題は、並べ替えメソッド内に新しいローカル配列を作成することです。これは、割り当ての制限のために明らかに返すことができません。

int[] y = new int[array.length];

渡された配列は変更されないため、メソッドは有効ではありません。つまり、新しい配列を作成せずに、その場で並べ替えを行う必要があります。メインメソッドから渡すと、ソートされてそこに出力できるようになります。

バブル ソートではswapメソッドを使用する必要があるため、必要な一時変数は 1 つだけです。

于 2013-11-09T21:31:50.653 に答える
1

配列を印刷するには、mainメソッドで必要になります

//code that initializes the array or whatever
sort(myArray);
System.out.println(Arrays.toString(myArray)); //print the array modified by the previous method call

@A4L がローカル配列について言ったことにも注意してください。メソッドにパラメーターとして渡す配列を操作します。新しい配列を作成しないでください。

于 2013-11-09T21:36:21.537 に答える
0

Arrays.sort()渡した配列を変更します。そのため、オブジェクトを反復処理して のarray呼び出し後に要素を出力するとArrays.sort()、出力されます。

于 2013-11-09T21:27:48.210 に答える
0

void sort メソッドがあるため、副作用として配列をソートする必要があります。つまりint[] array、メソッド パラメーターとして渡した参照の値を変更します。その後、メインから印刷できます。

于 2013-11-09T21:32:34.040 に答える