#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
orj
для индексации в массив. Вероятно, это все. Не используйте somerow
или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<
}