我试图在循环中理解这个数组的工作
TypeError
频率是在开始时初始化为
的数组for (int answer=0; answer<responses.length; answer++)
{
++frequency[responses[answer]]
}
我们还将响应作为具有值int [] frequency = new int [6];
我不明白这个int[] responses= {1,2,3,4,4,4,4,4}
是如何工作的,它在我看来是嵌套数组,但它是如何工作的?
答案 0 :(得分:1)
没有嵌套数组。您只是嵌套两个数组访问语法。
要解释此代码,我们首先需要知道answer
变量将如何变化。从for循环标题中,我们可以看到它从0开始,一直到responses.length - 1
,即8.现在我们可以评估表达式frequency[responses[answer]]
:
// in each iteration of the loop
frequency[responses[0]]
frequency[responses[1]]
frequency[responses[2]]
frequency[responses[3]]
frequency[responses[4]]
frequency[responses[5]]
frequency[responses[6]]
frequency[responses[7]]
现在我们可以评估responses[x]
部分。我们只需要在responses
数组中找到相应的响应。 responses[0]
是第一项,1
。
frequency[1]
frequency[2]
frequency[3]
frequency[4]
frequency[4]
frequency[4]
frequency[4]
frequency[4]
该语句还包括++
运算符,它将frequency
的特定索引递增1.因此,所有上述索引将一个接一个地递增1,使得{{1}数组看起来像这样:
frequency
在更高的抽象级别上,此代码计算特定响应在[0, 1, 1, 1, 5, 0]
数组中出现的次数。例如,responses
出现了5次。
答案 1 :(得分:0)
探险
++frequency[responses[answer]]
与编写完全相同
int fi = responses[answer];
++frequency[fi];
frequency
有六个元素,responses
中的所有条目都是六元素数组的有效索引。 answers
有八个元素,因此只要answer
介于0到7之间,整个过程就会有效。