Как зациклить 2D-массив с помощью цикла for? - PullRequest
0 голосов
/ 07 января 2019

Глядя на цикл for-each, но не знаю, как это сделать, используя обычный цикл for в Java, как в:

for(int i=0; i<length;i++)

Изменить это для каждого цикла

    for (int[] bomb: bombs) {

Попробовал это

`for (int[] bomb = 0; bomb<bombs; bomb++) // doesn't work

Разъяснение: Я знаю, что означают эти две петли

for (int[]bomb: bombs)`
for (int i = 0; i<bombs.length; i++){}

Если возможно, я хочу, чтобы их объединенная функциональность заключалась в сохранении позиции i в двумерном массиве и сохранении i как самого массива в одной для линии цикла. Другими словами, я хочу удобство наличия позиции цикла в двумерном массиве и непосредственного захвата массива int [] в двумерном массиве.

Контекст

public class MS {
    public static void main(String[] args) {
//Example of input
        int[][] bombs2 = {{0, 0}, {0, 1}, {1, 2}};
        // mineSweeper(bombs2, 3, 4) should return:
        // [[-1, -1, 2, 1],
        //  [2, 3, -1, 1],
        //  [0, 1, 1, 1]]
    }
    public static int[][] mineSweeper(int[][] bombs, int numRows, int numCols) {
        int[][] field = new int[numRows][numCols];
//////////////////////// Enhanced For Loop ////////////////////
        for (int[] bomb: bombs) {
////////////////////// Change to regular for loop //////////////
            int rowIndex = bomb[0];
            int colIndex = bomb[1];
            field[rowIndex][colIndex] = -1;
            for(int i = rowIndex - 1; i < rowIndex + 2; i++) {
                for (int j = colIndex - 1; j < colIndex + 2; j++) {
                    if (0 <= i && i < numRows &&
                            0 <= j && j < numCols &&
                            field[i][j] != -1) {
                        field[i][j] += 1;
                    }
                }
            }
        }
        return field;
    }
 }

Ответы [ 2 ]

0 голосов
/ 07 января 2019

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

public class LearnLoopity
{
  private int[][] doubleListThing = {{0, 0}, {0, 1}, {1, 2}};

  @Test
  public void theTest()
  {
    System.out.print("{");

    for (int[] singleListThing : doubleListThing)
    {
      System.out.print("{");
      for (int individualValue : singleListThing)
      {
        System.out.print(individualValue + " ");
      }

      System.out.print("} ");
    }

    System.out.print("} ");
  }
}
0 голосов
/ 07 января 2019

Согласно Заявление for следующие два одинаковы:

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

или

for (int[] bomb : bombs) {

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...