2015-11-17 5 views
1

Я изучаю для теста в классе программирования, и я не могу показаться, чтобы получить решить эту конкретную проблему практики:Basic Java Array - Печать «Пирамида» возрастающие значения

Написать код, который строит массив называется пирамиды , который выводит следующий массив:

0 0 0 0 0 0 0 0 
0 1 1 1 1 1 1 1 
0 1 2 2 2 2 2 2 
0 1 2 3 3 3 3 3 
0 1 2 3 4 4 4 4 
0 1 2 3 4 4 5 5 
0 1 2 3 4 4 5 5 

Как вы можете видеть, он должен быть достаточно простым; присвойте номер строки и столбца, соответствующий этому элементу, в их соответствующем индексе, но я не могу, по моему мнению, понять это.

Вот что у меня до сих пор:

public static void main(String[] args) 
{ 
    int[][] list = new int[7][7]; 
    pyramid(list); 
    for(int row = 0; row < list.length; row++) 
    { 
     for (int column = 0;column < list[row].length; column++) 
     { 
      System.out.printf("%2d ", list[row][column]); 
     } 
     System.out.println(); 
    } 
} 
static void pyramid(int[][] input) 
{ 
    for(int r = 0; r < input.length; r++) 
    { 
     for(int c = 0; c < input[r].length; c++) 
     { 
      //what should go in here? 
     } 
    } 
} 

размещения

input[c][r] = r; 

в теле второго цикла становится мне все ближе и ближе к желаемому выходу - хотя он все еще не дотягивает.

Выход:

0 1 2 3 4 5 6 
0 1 2 3 4 5 6 
0 1 2 3 4 5 6 
0 1 2 3 4 5 6 
0 1 2 3 4 5 6 
0 1 2 3 4 5 6 
0 1 2 3 4 5 6 
//arg! 

Что дальше? Что мне делать дальше?

Любая помощь очень ценится!

+0

СОВЕТ. Если номер строки меньше, чем номер столбца, тогда значение должно быть равно строке, и наоборот – JackVanier

+0

. Что происходит в @JackWilliams, так это то, что вам нужно max (строка, столбец) –

+0

@BenKnoble на самом деле вам нужно 'min (row , столбец) ' – JackVanier

ответ

6

Значение в каждой ячейке является меньшим из строк и столбцов номер:

input[c][r] = Math.min(c, r); 

Для вашего интереса, альтернативный подход заключается в записи каждого значения непосредственно в соответствующее место в массиве:

for (int i = 0; i < pyramid.length; i++) { 
    for (int j = i; j < pyramid.length; j++) { 
     pyramid[i][j] = i; 
     pyramid[j][i] = i; 
    } 
} 
+0

Большое спасибо, вы святой! У меня была головная боль весь день, пытаясь понять это! – TheAtlasTheory

0
public class Pyramid { 
    public static void main(String[] args) { 
     int[][] list= { 
       {0, 1, 2, 3, 4, 5, 6}, 
       {0, 1, 2, 3, 4, 5, 6}, 
       {0, 1, 2, 3, 4, 5, 6}, 
       {0, 1, 2, 3, 4, 5, 6}, 
       {0, 1, 2, 3, 4, 5, 6}, 
       {0, 1, 2, 3, 4, 5, 6}, 
       {0, 1, 2, 3, 4, 5, 6}}; 
     pyramid(list); 
    } 
    static void pyramid(int[][] arg){ 
     for (int i = 0; i < arg.length; i++) { 
      for (int j = 0; j < arg[i].length; j++) { 
       System.out.print(Math.min(i, j)); 
      } 
      System.out.println(); 
     } 
    } 

} 
+1

Извините, проблема заключается в том, что массив должен называться «пирамида» :-) – sprinter

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