Мне нужно заполнить этот 2D-массив по диагонали, и я не уверен, как это должно выглядеть.Заполнение 2D-массива по диагонали
Вот что у меня есть
for(int i=0; i < matrix.length; i++)
matrix[i][i] = i;
Мне нужно заполнить этот 2D-массив по диагонали, и я не уверен, как это должно выглядеть.Заполнение 2D-массива по диагонали
Вот что у меня есть
for(int i=0; i < matrix.length; i++)
matrix[i][i] = i;
Если вы хотите матрицу необходимо заполнить так, как это на картинке, сделайте немного манипуляций с индексами (demo):
int last = matrix.length-1;
for(int i=0; i < matrix.length; i++)
matrix[i][last-i] = last-i;
Изготовление такого же результата может быть достигнуто путем печати строк матрицы, начиная с последней, идущей назад.
Это будет работать только в том случае, если это квадратная двумерная матрица, и заполнит только одну из диагоналей (вверху слева внизу справа).
Это немного грязный, но то, что вам нужно, что:
public static void main(String[] args) throws IOException {
int n = 5; // dimension of the array
int[][] matrix = new int[n][n];
int count = matrix[0].length - 1;
int xcurr = 0;
int ycurr = count;
for(int x=0; x < matrix[0].length; x++) {
for (int y=0; y < matrix[0].length; y++) {
if (x == xcurr && y == ycurr) {
matrix[x][y] = count;
ycurr --;
xcurr ++;
count --;
} else {
matrix[x][y] = 0;
}
}
}
for(int i=0; i < matrix.length; i++) {
System.err.println(Arrays.toString(matrix[i]));
}
}
Это может быть сделано в ряде способов, вот один:
// Initializing the array
int[] array =
{
0, 0, 0, 0, 4,
0, 0, 0, 3, 0,
0, 0, 2, 0, 0,
0, 1, 0, 0, 0,
0, 0, 0, 0, 0
};
// Iteration of the loop for printing
for (int i = 0; i < array.length; i++) {
if (i % 5 != 0) // while is not divisible with 5
{
System.out.print(array[i]);
System.out.print(" "); // Spaces between numbers
} else // Makes new line for every fifth iteration
{
System.out.println();
}
}
I надеюсь, что это имеет смысл из комментариев.
woops. Вероятно, неправильно понял этот вопрос. Думал, что вы просто хотели напечатать массив, как показано на картинке. – freddy