Создание массива Java и изменение имени массива - PullRequest
0 голосов
/ 26 марта 2012

Можете ли вы создать строку кода в цикле while, которая создаст новый массив AND , который будет изменять имя массива при каждой итерациицикл while?

Пример:

int size = 10;
int name_count = 1;

while(size <= 100)
{
    //name_count is changing the name of the array by calling it
    // "array1", "array2", etc...
    //I know this may not be correct code for changing the name of
    // the array, but it is suppose to get the point across.
    int[] array(name_count) = new int[size]; 

    for (int i = 0; i <= size; i++)
    { /* Adding numbers to an array */ }

    size = size + 5;
    name_count++;
}

Ответы [ 2 ]

2 голосов
/ 26 марта 2012

Имена идентификаторов должны быть определены во время компиляции. Таким образом, вы не можете явно использовать разные имена переменных на каждой итерации цикла.

Другая проблема с вашим псевдокодом состоит в том, что, если бы массив был объявлен внутри цикла, он выпал бы из области видимости после завершения цикла, поэтому не было бы особой необходимости.

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

List<List<Integer>> listOfArrays = new ArrayList<List<Integer>>();
while (size <= 100) {
  List<Integer> listOfNumbers = new ArrayList<Integer>(size);
  /* insert loop here to add numbers to listOfNumber */

  size += 5;
  name_count += 1;
}

Затем вы можете получить доступ к каждому списку чисел, используя индекс в listOfArrays - эквивалентно присвоению каждому номеру с индексом, но обработанному во время выполнения вместо времени компиляции.

0 голосов
/ 26 марта 2012

Вы не можете изменить имя массива, он будет просто повторно объявлять массив с каждым успешным циклом.(Это будет новый пустой массив.) Я думаю, что вы ищете, это двумерный массив.

int[][] myArray = new int[3][3];
...