Сетка номеров 2D-массива с for и if

#java #for-loop #if-statement #arraylist

#java #цикл for #if-оператор #список массивов

Вопрос:

Я недавно начал изучать Java. У меня есть задача, в которой я должен напечатать числовую сетку с определенными значениями в ней.

Вот код:

 public static void main(String[] args) {
  int array[][] = {{1, 2, 3, 5, 7},
                    {10, 11, 12, 14, 16},
                    {19, 20, 21, 23, 25},
                    {28, 29, 30, 32, 34},
                    {37, 38, 39, 41, 43},
                    {46, 47, 48, 50, 52}};

  for (int i = 0; i < array.length; i  ){
      for (int j = 0; j < array[i].length; j  ) {
          System.out.print(array[i][j]   " ");
      }
      System.out.println("");
  }


}

}
  

Теперь это работает отлично, но в идеале я мог бы объявлять значения только первой строки и использовать цикл for с оператором if для выполнения того же самого, но я изо всех сил пытаюсь найти код для этого.

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

1. Похоже, вы даже не пытались эту модификацию.

2. Мое предложение состояло бы в том, чтобы просто начать и попробовать что-нибудь, использовать IDE, такую как Eclipse или Intellij, для быстрой отладки больших ошибок, а затем запустить ее с помощью отладчика в этих IDE. Потратьте несколько часов и доработайте столько, сколько сможете. Затем, если вы все еще застряли, отправьте вопрос с любым кодом, который у вас есть на данный момент.

3. Вам не нужен оператор if; вам нужен способ вычисления значения для печати на основе значений i и j и первой строки значений.

Ответ №1:

Разница между двумя элементами в столбце равна 9: a[i][j] = a[i-1][j] 9 , таким образом, код может быть изменен как:

 public static void main(String args[]) {
      int array[][] = new int[6][5];
      // initialize the first row
      array[0] = new int[] {1, 2, 3, 5, 7};  
      // print the first row
      System.out.println(Arrays.toString(array[0]));

      for (int i = 1; i < array.length; i  ) {
          // populate current row incrementing each element by 9
          for (int j = 0; j < array[i].length; j  ) {
              array[i][j] = array[i - 1][j]   9; 
          }
          System.out.println(Arrays.toString(array[i]));
      }
}
  

Вывод:

 [1, 2, 3, 5, 7]
[10, 11, 12, 14, 16]
[19, 20, 21, 23, 25]
[28, 29, 30, 32, 34]
[37, 38, 39, 41, 43]
[46, 47, 48, 50, 52]
  

Обновить

Было бы более интересной задачей сгенерировать последовательность, начинающуюся с 1. Внутри строки различия между двумя соседними элементами изменяются следующим образом 1, 1, 2, 2, 3 , и 3 — это разница между последним элементом предыдущей строки и первым элементом в следующей строке.

 int x = 1;
for (int i = 1; i < 7; i  ) {
    for (int j = 1; j < 6; j  ) {
        System.out.print(x   "  ");
        x  = j / 2   j % 2;
    }
    System.out.println();
}
  

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

1. То, что я продолжал делать, это то, что я инициализировал другой int, установив его как array [i] [j] и добавив к нему 9, но он просто выдал много чисел.