Хранение значений в двумерном массиве в Java - PullRequest
0 голосов
/ 29 сентября 2019

Совершенно новый для Java.

Я пытаюсь сохранить значения из строки в двумерный массив в Java. Первые два значения моей строки дают мне строки и столбцы для сетки. Отсюда мне нужно использовать Integer.parseInt () для разбора значений и их назначения. Я пытаюсь сделать это с помощью цикла for (), но я полностью застрял. Вот что у меня есть (заметки включены, чтобы указать, что я пытаюсь достичь):

    int r = Integer.parseInt(tokens[0]);
    rows = r;

    int c = Integer.parseInt(tokens[1]);
    cols = c;

    // create 2D array of int values
    // place the reference to the array object in grid variable

    int[][] input = new int[rows][cols];
    grid = input;

    //parse then store remaining values as int values in the 2D array using a nested loop

    for(int i = 0 ; i < tokens.length ; i++) {

        // read the next value and assign to next token
    }

1 Ответ

1 голос
/ 30 сентября 2019

Ваш код выглядит немного не так - вы разбираете эти числа в переменные типа int r и c, но затем делаете int[][] input = new int[rows][cols];. У вас нет таких переменных, как rows и cols.

Также вам не следует начинать с 0 в цикле, поскольку значения tokens[0] и tokens[1] предназначены для количества строк и столбцов.

Начинайте цикл с 2 или заканчивайте его tokens.length-2 и добавляйте 2 каждый раз, когда вы берете значение из tokens внутри цикла.

Для вычисления индекса строки и столбца вам необходимовозьмите i (например, индекс в массиве tokens), отрегулируйте вышеупомянутое смещение 2, разделите пол по столбцам, чтобы получить номер строки, и получите остаток от деления по столбцу, чтобы получить номер строки.

Например

for(int i = 2 ; i < tokens.length; i++) {
   int value = Integer.parseInt(tokens[i]);
   int idx = i-2;
   int row = Math.floorDiv(idx, c);
   int col = idx % c;
   grid[row][col] = value;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...