【问题标题】:How nested array in a loop will work循环中的嵌套数组如何工作
【发布时间】:2018-11-05 12:08:13
【问题描述】:

我正在尝试理解这个数组在循环中的工作原理

for (int answer=0; answer<responses.length; answer++)
{
++frequency[responses[answer]]
}

Frequency 是一个数组,在 start 中初始化为

int [] frequency = new int [6];

我们也有一个数组的响应,其值为int[] responses= {1,2,3,4,4,4,4,4}

我不明白这个++frequency[responses[answer]] 是如何工作的,在我看来它是嵌套数组,但它是如何工作的?

【问题讨论】:

    标签: java arrays loops


    【解决方案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,使frequency 数组如下所示:

    [0, 1, 1, 1, 5, 0]
    

    在更高的抽象级别上,此代码计算特定响应在 responses 数组中出现的次数。例如,4 出现了 5 次。

    【讨论】:

      【解决方案2】:

      远征

      ++frequency[responses[answer]]
      

      和写的一模一样

      int fi = responses[answer];
      ++frequency[fi];
      

      frequency 有六个元素,responses 中的所有条目都是六元素数组的有效索引。 answers 有 8 个元素,所以只要 answer 在 0 到 7 之间,整个事情就可以了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-05-13
        • 2021-11-24
        • 2022-05-12
        • 1970-01-01
        • 1970-01-01
        • 2020-11-08
        • 1970-01-01
        相关资源
        最近更新 更多