2017-10-29 12 views
-2

返す複数の配列を追加するには?
配列aと配列outputを返したいと思います。
[] [] int型私はこの方法で追加されますが、私はJavaの静的intメソッドで複数の配列を返す方法は?

public class Bubble 
{ 
    public static int[][] bubbles(int[]a) 
    { 
     int output[]= new int [2 ]; 

     Random g = new Random(); 
     a = new int [4]; 
     for (int i = 0 ; i<a.length ; i++) 
     { a[i] = g.nextInt(4)+1;} 
     int count1=0; 
     for (int i = 0 ; i<a.length ; i++) 
     { a[i] = g.nextInt(4)+1;} 
     int swap = 0; 

     for (int pass = 0; pass < a.length ; pass++) 
     { 
      for (int i = 0; i < a.length - 1; i++) 
      { 
       count1 ++; 
       if (a[ i ] > a[ i + 1 ]) 
       { 
        int temp = a[i]; 
        a[i] = a[i + 1]; 
        a[i + 1] = temp; 
        swap++; 
        output[0]=swap; 
        output[1]=count1; 
       } 
      } 
     } 
     return (output); 
    } 
} 
+0

は、以下を参照してください。https://stackoverflow.com/help/someone-answers – c0der

答えて

0

最善の解決策は、1 provided hereですが、リターンを追加する方法がわかりません。

あなたのメソッドの戻り値を使用したい場合は、このようにそれを行う

return new Object[]{a, output}; 

よう

public static Object[] bubbles(int[] a) 

にあなたのメソッドのシグネチャを変更し、結果を返す

// somewhere in your code 
Object[] res = bubbles(yourArray); 
int[] a = (int[]) res [0]; 
int[] output = (int[]) res[1]; 
+0

ありがとうございました!そして、2つの配列を返すように呼び出すにはどうしたらいいですか? –

+0

私はそれに応じて私の答えを更新しました。しかし、コードスニペットをコピーして貼り付けるのではなく、基本的なJavaプログラミングの概念に精通することをお勧めします。たとえば、クラスとメソッドについては、[命名規則(http://www.oracle.com/technetwork/java/codeconventions-135099.html)]に注意してください。 –

0

次の2つの配列を返すために、あなたは両方を含む単一のオブジェクトを返す必要があります、そして、あなたの戻り値の型int[][]を作ることによって用意しましたことを実現しました。さて、return (output)の代わりに、あなたが行うことができます:短い答えはあなたが両方返す必要がないということである

int[] arr = new int[]{1,2,3}; 
int[][] bubResult = bubbles(arr); 
System.out.println("Array of random numbers that was "a" in bubbles:"); 
System.out.println(Arrays.toString(bubResult[0]); 
System.out.println("Two-element array that was "output" in bubbles:"); 
System.out.println(Arrays.toString(bubResult[1]); 
+0

ありがとう!そして、2つの配列を返すように呼び出すにはどうしたらいいですか? –

+0

私の答えを修正しました –

0

int[][] result = new int[2][]; 
result[0] = a; 
result[1] = output; 
return result; 

または

return new int[][]{a, output}; 

はこのようにそれを呼び出します。既にaがあります。
int[] aは変更可能ですので、bubblesメソッドで変更されます。 ちょうどバブルは出力を返してきた:

public static int[] bubbles(int[]a) 

泡からa初期設定を削除します。

// a = new int [4]; 

と、次のようにbubblesを使用します。

public static void main(String[] args) { 

    int[] a = new int [4]; 
    int[] output = bubbles(a); 

    System.out.println(Arrays.toString(a)); 
    System.out.println(Arrays.toString(output)); 
} 

--- -------------------------------------------------- ------- -----
あなたがbubblesから2つのint[]のオブジェクトを返す必要がない場合は、あなたがListを使用してBU例えば、多くの方法でそれを行うことができます:

変更返すようにbubblesの署名リスト:

public static List<int[]> bubbles() 

bubbles中でaオブジェクトを作成します。

int[] a = new int [4]; 

Listを返すために必要なコードを追加します。

List<int[]> returnValue = new ArrayList<>(); 
    returnValue.add(a); 
    returnValue.add(output); 
    return returnValue; 

ことによってそれを使用します。

public static void main(String[] args) { 
    List<int[]> returnValue = bubbles(); 
    System.out.println(Arrays.toString(returnValue.get(0))); //prints a 
    System.out.println(Arrays.toString(returnValue.get(1))); //prints output 
} 
関連する問題