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