Я хочу сохранить N значений в массиве со значениями, заполняемыми последовательно, начиная с 1

#java #arrays

#java #массивы

Вопрос:

Я хочу сгенерировать N целых значений, где N = row * column (некоторые координаты из 2D-плоскости) в массив. Затем я хочу последовательно присваивать значения от 1 до N массиву слева направо, а затем возвращать массив.

 private static int[] to1Dcoords(int row, int column) {
    grid = new int[row][column];                           //creates n by n grid
    int temp = 1;

    for (int i = 0; i < grid.length; i  ) {
        for (int j = 0; j < grid[row].length; column  ) {
            grid[row][column] = temp;
            temp  ;
        }
    }
    return grid;
}
  

Это изображение должно прояснить, что я пытаюсь сделать

введите описание изображения здесь

ввод to1Dcoords(2,3) вывод [1, 2, 3, 4, 5, 6]

Комментарии:

1. Ваш вопрос мне не ясен. Не могли бы вы привести пример? (заданный ввод -> ожидаемый результат)

2. 1) вы не присваиваете значения 2D массиву последовательно — вы получите ArrayOutOfBoundsIndexException в строке grid[row][column] = temp; 2) если вам нужно заполнить 1D массив значениями от 1 до row*column , вам вообще не нужно создавать 2D массив. Пожалуйста, уточните свой вопрос.

3. вам также не нужно иметь отдельную переменную temp и увеличиваться в каждом цикле, поскольку этот код может работать только с одним циклом. вы можете использовать цикл for и использовать переменную iterator для последовательного заполнения значений.

4. Мне кажется, что ваш код делает это, за исключением того, что вы не используете i or j для индексации в массив. Вероятно, это все. Не используйте some row или column вне области видимости, в этом нет необходимости. Не забудьте изменить column на j .

Ответ №1:

если вы просто хотите создать одномерный массив с возрастающими числами в массиве, вы можете сделать это без промежуточного 2D-массива.

 private static int[] to1Dcoords(int row, int column) {
    int[] result = new int[row*column];
    for (int i = 0; i < result.length; i  ) {
        result[i] = i;
    }
    return resu<
}