2016-11-03 13 views
1

ランダムな整数の配列を動的に作成し、配列リストに入れようとしています。後で、これらの配列をそれぞれ別々に使い、クイックソート機能をテストしたいと思います。 ArrayListにオブジェクトList []を追加する際に問題があります。arrayListに複数の整数配列を入力して各配列を出力する

//Create dynamic amount of random arrays 
public static ArrayList<int[]> Randomizer(int arrays, int size, int seed){ 
    ArrayList<int[]> Tests = new ArrayList<int[]>(arrays); 


    int[] List = new int[size]; 
    for (int j = 0; j < arrays; j++){ 
     Random r = new Random(seed+j); 
     for(int i = 0; i < size; i++){ 
      List[i] = r.nextInt(5*size);//Multiplier for how big the numbers get 
      System.out.print(List[i] + ","); 
     } 
     System.out.println(); 
     Tests.add(j, List); 
    } 


    return Tests; 
} 


public static void main(String[] args) { 
int tests = 5; 
int size = 4; 
ArrayList<int[]> Test = Randomizer(tests,size,10); //1st = Number of Tests 
                //2nd = Number of Digits 
                //3rd = seed for Randomizer 
for(int i = 0; i < Test.size(); i++){ 
System.out.println(Test.get(i)); 
} 
} 

}あなたのコードで

+0

私はあなたのコードをEclipseに投げただけで、すべてが正常に動作しているようです。あなたは 'println(Test.get(i))'を実行すると混乱しますか?取得した結果は、配列のメモリ位置です。メインメソッドの数値を見るには、何か別の処理をする必要がありますが、結果は配列です。 –

+0

私は今質問の内部の配列のデータベースから1つの配列を使用する方法に私の質問を変更する必要がありますね。たとえば、1つだけを印刷します。それから、forループを使ってそれらをすべて実行することができます。 –

+1

これらの配列で何をしたいかによって異なります。配列を印刷するには、[this](http://stackoverflow.com/questions/409784/whats-the-simplest-way-to-print-a-java-array)を参照してください。それらをリストに残すことで、それらをすべてメソッドまたはコンストラクタに渡すことができます。次に、Test.get(i)を使用して必要なものを取得するだけです。 –

答えて

1

問題は、それが正しい番号を印刷生成時に印刷するときに、あなたがそう、ArrayList同じ配列 5回を格納したことだったが、後であなたが得ることができませんでしたそれらを出す。 forループの各反復は、以前に生成された値を上書きしていました。あなたが実際に新しいアレイを作成する代わりに、同じものを毎回使用しているように、基本的には、のためにループ内int[] list = new int[size];線を移動するのに必要な

private static ArrayList<int[]> randomizer(int arrays, int size, int seed){ 
    ArrayList<int[]> tests = new ArrayList<>(arrays); 
    for (int j = 0; j < arrays; j++) { 
     int[] list = new int[size]; 
     Random r = new Random(seed + j); 
     for(int i = 0; i < size; i++) { 
      list[i] = r.nextInt(5 * size); // Multiplier for how big the numbers get 
     } 
     tests.add(j, list); 
    } 
    return tests; 
} 

public static void main(String[] args) { 
    int tests = 5; 
    int size = 4; 
    ArrayList<int[]> arrays = randomizer(tests, size, 10); 
    for (int i = 0; i < arrays.size(); i++){ 
     int[] ints = arrays.get(i); 
     for (int j = 0; j < ints.length; j++) { 
      System.out.print(ints[j] + ","); 
     } 
     System.out.println(); 
    } 
} 

:ここ

は修正されたコードです。

クイックソートテストのように、main()メソッドの印刷ループを好きなものに置き換えることができます。それでもまだ動作しないものがあれば教えてください。

関連する問題