Java Looping через 2D-массив - домашнее задание - PullRequest
0 голосов
/ 11 октября 2018

Мне нужно пройтись по двумерному массиву, создать и сохранить случайный вопрос и проверить ответ пользователя.Однако я не могу понять, как правильно ссылаться на элементы.Я использую старый синтаксис (counter; counter

Как мне ссылаться на определенный элемент массива с этим синтаксисом?Это довольно запутанно для меня.Мне нужно сослаться на 5-й элемент в строке, чтобы увидеть, что пользователь ввел, чтобы вырваться из цикла, а также просмотреть и перенести 1D-массив в текущую строку 2D-массива.

    for(int arrRow[] : arr)                 //arr is a [100][5] array
    {
        switch(rNum.nextInt(4))             //Creates a random number between 0 and 3 and passes it to a switch statement
        {
            case 0:                         //Generates an Addition question
                arr2 = a.quiz();
                break;
            case 1:                         //Generates a Subtraction question
                arr2 = s.quiz();
                break;
            case 2:                         //Generates a Multiplication question
                arr2 = m.quiz();
                break;
            case 3:                         //Generates a Division question
                arr2 = d.quiz();
        }

        //for (colNum=0; colNum<5;colNum++) //loops through the column in the 2D array and pulls data from returned array
        for(int arrCol : arrRow)
        {
            arrCol = arr2[arrCol];
        }

        if(arrRow[4] == -1)                 //If user enters a -1, breaks from the for loop
        {
            break;
        }
    }
    newTest.printQuestionResult();          //Calls the print function after the user is done or the test is complete
}

Ответы [ 2 ]

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

Похоже, вы не можете использовать цикл for-each для изменения элементов массива, как я собирался это сделать.Мне придется придерживаться типичного цикла for со счетчиком.

https://www.geeksforgeeks.org/for-each-loop-in-java/

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

Ваш arrCol является int, который является переменной примитивного типа, поэтому эта переменная является значением, скопированным из arrRow.Если вы присвоите какое-либо значение arrCol, оно не будет отражено в arrRow.

Вместо этого вы должны сделать следующее:

for (int index = 0; index < arrRow.length; i++)
{
    int col = arrRow[index];
    arrRow[index] = arr2[col];
}

Я не уверен, что arr2содержит, так что я не могу быть уверен, что вы встретите ArrayIndexOutOfBoundsException, когда будете читать его элементы следующим образом.

Я думаю, вам нужно было arr2[index], а не arr2[col].

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