Есть ли способ создать массивы в цикле в JAVA? - PullRequest
0 голосов
/ 31 октября 2019

Я пытался создать объект, размер которого и сколько определяется пользователем, но вывод только одного массива. Есть ли способ создать массивы в цикле?

public class Somehthing {    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Scanner sc2 = new Scanner(System.in);
        Random rnd = new Random();
        System.out.println("How many array?:");

        for (int j = 0; j <= sc.nextInt(); j++) {
            System.out.println("Define array size:");
            int[] dizi = new int[sc2.nextInt()];
            for (int i = 0; i <= dizi.length - 1; i++) {
                int deger = rnd.nextInt(1000000);
                dizi[i] = deger;
                System.out.println(array[j]);
            }
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Я не уверен, правильно ли я понимаю, но если вы хотите создать n количество массивов, тогда все, что вам нужно сделать, это использовать новую структуру данных для хранения ваших массивов;например, ArrayList (вы можете использовать двумерный массив для хранения информации, но многомерные массивы имеют тенденцию становиться очень сложными, очень быстрыми; это проще.

Так что это небольшое изменение необходимо:

public static void main(String[] args) {


  Scanner sc = new Scanner(System.in);
  Scanner sc2 = new Scanner(System.in);  //I don't understand why you used a second scanner
  Random rnd= new Random();
  ArrayList<Integer[]> arrays = new ArrayList<>();  //you must import java.utils.ArrayList;
  System.out.println("How many array?:"); 

  for(int j=0;j<=sc.nextInt();j++){
     System.out.println("Define array size:");
     Integer[] array = new int[sc2.nextInt()];
     for(int i=0;i<=array.length-1;i++){
       int value=rnd.nextInt(1000000);
       array[i]= value;
       System.out.println(array[j]);
       }
     arrays.add(array); //You are adding this array into your List of arrays.
   }
}

Не забудьте использовать класс-оболочку Integer() со списками, примитивные типы работать не будут. Если вам нужно знать почему, прочитайте this ответ переполнения стека или этот учебник для Generics .

Я не тратил время на оптимизацию вашего кода, потому что пытался решить только вашу проблему/question.

0 голосов
/ 31 октября 2019

2-мерный массив будет работать:

Scanner sc = new Scanner(System.in);
Random rnd= new Random();

System.out.println("How many array?:");
int[][] array = new int[sc.nextInt()][];
for(int j = 0; j < array.length; j++){
    System.out.println("Define array size:");
    array[j] = new int[sc.nextInt()];
    for(int i = 0; i < array[j].length; i++){
        array[j][i] = rnd.nextInt(1000000);
    }
    System.out.println(Arrays.toString(array[j]));
}
...