Java在2D数组中循环-家庭作业

Java在2D数组中循环-家庭作业,java,arrays,2d,Java,Arrays,2d,我必须循环一个2D数组,创建并存储一个随机问题,并测试用户的响应。但是,我不知道如何正确地引用这些元素。我习惯了(counter;counter

我必须循环一个2D数组,创建并存储一个随机问题,并测试用户的响应。但是,我不知道如何正确地引用这些元素。我习惯了(counter;counter 如何使用此语法引用特定数组元素?这让我很困惑。我需要引用行中的第5个元素,以查看用户输入的内容,从而中断循环,并循环通过一维数组并将其转置到二维数组的当前行中

    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
}
for(int-arrRow[]:arr)//arr是一个[100][5]数组
{
switch(rNum.nextInt(4))//创建一个介于0和3之间的随机数,并将其传递给switch语句
{
案例0://生成一个附加问题
arr2=a.测验();
打破
案例1://生成一个减法问题
arr2=s.quick();
打破
案例2://生成一个乘法问题
arr2=m.quick();
打破
案例3://生成一个除法问题
arr2=d.测验();
}

//对于(colNum=0;colNum您的
arrCol
是一个
int
基本类型变量,因此此变量是从
arrRow
复制的值。如果您为
arrCol
分配任何值,它将不会反映在
arrRow

您应该这样做:

for (int index = 0; index < arrRow.length; i++)
{
    int col = arrRow[index];
    arrRow[index] = arr2[col];
}
for(int index=0;index
我不确定
arr2
包含什么,所以我不能确定当您阅读它的元素时是否会遇到
ArrayIndexOutOfBoundsException


我猜您需要的是
arr2[index]
而不是
arr2[col]

看起来您不能像我打算的那样使用for-each循环来更改数组的元素。我必须使用带有计数器的典型for循环


您不需要
arrCol=arr2[arrCol];
for(int-arrCol:arrRow)
的代码
arrCol
已经将值分配给
arr2
应该包含的内容?以及
arrCol
持有的哪些值使其成为
arr2
的索引?清楚的是
arrCol=arr2[arrCol]当你将一个原始变量(值引用)用新值赋值时,它肯定是错误的,它不会改变任何东西。考虑你的2D数组就像一个包含100行(y)的数据表,每行包含5列(x)。(int x=0;x
@ScaryWombat-也许我没有正确地解释这本书。我的理解是,“for(arrRow[]:arr)”循环通过arr数组的行,可以被视为arr[x],其中x值在每次循环运行时都会递增。“for(int-arrCol:arrRow)”将在该行的列中循环。然后我将解释arrCol将表示arr[x][y],其中y值在每次循环运行时递增。基于此,我进一步假设“arrCol=arr2[arrCol]”将与“arr[x][y]=arr2[y]相同"@DevilsHnd-谢谢你的提示。我可以让它以这种方式工作没有问题,但我真的试图从我的类的指定文本中理解这种不熟悉的语法。书中只有几个例子,我现在似乎无法理解这个概念。arr2是一个包含5个元素的整数数组。case语句调用一个随机测试并重新计算将5元素数组转换为arr2数组。IE-如果调用加法测验,它可能包含{1,0,2,3,4}:1是左参数0表示这是一个加法问题2是右参数3是正确答案4是用户的响应第二个for循环将每个arr2元素的内容拉到主数组的当前行中。如果用户在-1中键入任何键,它将从第一个for循环中断。它与常规for循环一起工作,但这不是我不熟悉的新语法。