2015-03-30 2 views

ответ

2

Если вы хотите матрицу необходимо заполнить так, как это на картинке, сделайте немного манипуляций с индексами (demo):

int last = matrix.length-1; 
for(int i=0; i < matrix.length; i++) 
     matrix[i][last-i] = last-i; 

Изготовление такого же результата может быть достигнуто путем печати строк матрицы, начиная с последней, идущей назад.

0

Это будет работать только в том случае, если это квадратная двумерная матрица, и заполнит только одну из диагоналей (вверху слева внизу справа).

0

Это немного грязный, но то, что вам нужно, что:

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])); 
    } 
} 

DEMO HERE

0

Это может быть сделано в ряде способов, вот один:

// 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 надеюсь, что это имеет смысл из комментариев.

+0

woops. Вероятно, неправильно понял этот вопрос. Думал, что вы просто хотели напечатать массив, как показано на картинке. – freddy

Смежные вопросы