1-мерный массив -> 2D-массив - PullRequest
0 голосов
/ 05 октября 2018

Так что я новичок;Задача состоит в том, чтобы преобразовать заданную строку в массив, строка всегда имеет первый символ как количество строк и второй символ как количество столбцов.

Моя проблема заключается в том, чтобы решить, как переместить остальныестроки 's' в массив 2D из массива 1D.

Заранее спасибо!

import java.util.Scanner;

    public class Main {

      public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        String[] s = scanner.nextLine().split(" ");
        int arows = Integer.parseInt(s[0]);
        int acols = Integer.parseInt(s[1]);


        int[][] cells = new int[arows][acols];

        for (int col = 0; col < acols; col++){
          for (int row = 0; row <= arows;row++){
            cells[row][col] = Integer.parseInt(s[2]);
          }
        }
      }
    }

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Это решение, вам нужно поставить другой итератор и инициализировать его 2, чтобы пропустить первые два элемента s []

int i = 2;
for (int col = 0; col < acols; col++){
    for (int row = 0; row < arows;row++){
        cells[row][col] = Integer.parseInt(s[i]);
        i++;
    }
}
0 голосов
/ 05 октября 2018

Вам нужно реализовать счетчик для ваших циклов for для итерации по входной строке.То, что вы делаете сейчас, это заполнение вашего 2D-массива третьим элементом вашей строки.

Одним из решений будет просто объявить переменную i = 2 и увеличивать ее для каждого прохода внутреннего для-loop.

int i = 2
for (int col = 0; col < acols; col++){
    for (int row = 0; row < arows;row++){
        cells[row][col] = Integer.parseInt(s[i]);
        i++;
    }
}

Редактировать: удалено <= в цикле строки, изменено начальное значение индекса на 2 </p>

...