Массивы внутри Массивы в Java - PullRequest
0 голосов
/ 23 января 2019

Я хочу создать несколько массивов путем доступа к родительскому массиву. например, как сделать этот массив?

Здесь, в этом коде, следующие данные вводятся пользователем, и код просто печатает массивы, т.е. 2-> общий размер родительского массива (он сообщит компилятору, что пользователь введет два массива в качестве входных данных) 6-> размер первого дочернего массива и т. Д.


2
6
5 1 3 4 18 56
8
8 7 3 1 34 72 89 11

и все они вводятся пользователем, даже размер массива.

 public static void main(String[] args) { 
  Scanner sc = new Scanner(System.in);
   int sarr[] = new int[30];
   int arr[] =  new int[30];
   int n =sc.nextInt();
   for (int i=0;i<n;i++)
   { sarr[i] = sc.nextInt();
     for (int j=0;j<=sarr[i];j++)
     { 
      arr[j]=sc.nextInt();
     }
   }
   for (int i=0;i<n;i++)
   { 
     for (int j=0;j<=sarr[i];j++)
     { 
        System.out.println(arr[i]);
     }
     System.out.println();
   }

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Вот решение о том, как вы можете построить двумерный массив со строками разных размеров. Каждый массив создается после того, как мы запросили его размер

Scanner sc = new Scanner(System.in);
System.out.println("Number of arrays");
String str1 = sc.nextLine();
int numberOfArrays = Integer.valueOf(str1);

int[][] array = new int[numberOfArrays][];

    for (int i = 0; i < numberOfArrays; i++) {
        System.out.println("Size of array");
        String str2 = sc.nextLine();
        int size = Integer.valueOf(str2);
        int[] row = new int[size];
        for (int j = 0; j < size; j++) {
            System.out.println("Value:");
            String str3 = sc.nextLine();
            int value = Integer.valueOf(str3);
            row[j] = value;
        }
        array[i] = row;        
    }
}

Обновление

Вот версия, которая позволяет вводить все числа в массиве в одну строку. Обратите внимание, что здесь нет обработки ошибок, проверяющей количество значений, полученных против ожидаемых и т. Д.

for (int i = 0; i < numberOfArrays; i++) {
    System.out.println("Size of array");
    String str2 = sc.nextLine();
    int size = Integer.valueOf(str2);
    int[] row = new int[size];
    System.out.println("Values:");
    String str3 = sc.nextLine();
    String[] numbers = str3.split("\\s");
    for (int j = 0; j < size; j++) {
        row[j] = Integer.valueOf(numbers[j]);
    }
    array[i] = row;
}
0 голосов
/ 24 января 2019

Если вы хотите создать многомерный массив в Java, вы должны использовать этот синтаксис:

int n = ...; 
int array[][] = new int[n][n];

Например:

try (Scanner sc = new Scanner(System.in)) {
        int n = sc.nextInt();
        int arr[][] = new int[n][n];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                arr[i][j] = sc.nextInt();
            }
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                System.out.println(arr[i][j]);
            }
            System.out.println();
        }
    }

Некоторые заключительные замечания:

  • Вы должны закрыть поток, когда закончите с ним
  • Вы не «говорите компилятору», так как компилятор не выполняется во время выполнения. Вы имеете в виду JVM, в любом случае.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...