Создайте несколько массивов, используя цикл for

Я хотел бы сделать программу, в которой пользователь может ввести количество переменных и заполнить каждую переменную определенными значениями. Например, пользователь вводит, что он / она хочет сделать 10 массивов, затем пользователь вводит, что первый массив должен иметь 5 элементов, и пользователь заполняет этот массив значениями, затем пользователь хочет, чтобы второй массив имел 4 элемента, и делает то же самое и так далее.

Это код, который я использовал, но он не работает:

public static void main(String[] args){
    Scanner s = new Scanner(System.in);
    System.out.println("Enter the numbers of variables: ");
    int i = s.nextInt();

    for(int j = 0;j < i;j++){
        int[] var = new int[j];
        System.out.println("Enter the number of values: ");
        int p = s.nextInt();
        for(int q = 0;q < p;p++){
            int n = s.nextInt();
            var[q] = n;
        }
    }
}

И как я могу сравнить эти массивы, которые вводит пользователь?

3 ответа

Решение

Проблема в том, что каждый раз вы создаете массив. попробуй это:

Scanner s = new Scanner(System.in);
System.out.println("Enter the numbers of variables: ");
int i = s.nextInt();
int[][] var = new int[i][];
for(int j = 0;j < i;j++){

    System.out.println("Enter the number of values: ");
    int p = s.nextInt();
    var[j] = new int[p];
    for(int q = 0;q < p;p++){
        int n = s.nextInt();
        var[j][q] = n;
    }
}

Вместо создания одномерного массива вы создаете зубчатый массив. По сути, двумерный массив - это массив массивов. таким образом, пользователь вводит количество массивов (i), а затем продолжает заполнять массивы.

Чтобы проверить, не имеют ли две коллекции значения общих, вы можете использовать

Collections.disjoint();

Для других операций, вы можете посмотреть здесь

Это должно работать и решить их первый пункт

    Scanner s = new Scanner(System.in);
    System.out.println("Enter the numbers of variables: ");
    int i = s.nextInt();

    int[][] var = new int[i][];

    for(int j = 0;j < i;j++){
         System.out.println("Enter the number of values: ");
         int p = s.nextInt();
         while (p>0)
         {
            var[j] = new int[p];
            for(int q=0;q < p;q++){
               System.out.println("Value number : " +(q+1) + " For Array Number "+  (j+1));
               int n = s.nextInt();
               var[j][q] = n;
            }
             p-=1;
         }
    }

Это должно работать (с двумерным массивом)

    public static void main(String[] args){
        Scanner s = new Scanner(System.in);
        System.out.println("Enter the numbers of variables: ");
        int i = s.nextInt();
        int[][] var = new int[i][];
        for(int j = 0;j < i;j++){
            System.out.println("Enter the number of values: ");
            int p = s.nextInt();
            var[j] = new int[p];
            for(int q = 0;q < p;q++){
                int n = s.nextInt();
                var[j][q] = n;
            }
        }
    }

Вы также должны заменить приращение во втором цикле ("q++" вместо "p++")

Другие вопросы по тегам