gpt4 book ai didi

java - 数组总结(工作代码),不抓一行代码

转载 作者:行者123 更新时间:2023-11-30 08:18:38 26 4
gpt4 key购买 nike

学习数组atm(自以为菜鸟)有人可以在这里解释这部分代码的含义吗?

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

我无法理解其中的逻辑。显然“答案”是我的计数器。频率增加 1 直到它到达数组 #11(这是数字 10),但是括号内发生的事情让我感到困惑。但如果它达到最大数量 10,结果(正确)给出实际频率。我的猜测是这段代码控制了这个类的大部分内容。
我是基于这段代码构建的,但我默认使用这部分代码(因为它本身在书中给出)。

谢谢。

完整代码

public class StudentPoll
{
public static void main( String[] args)
{
int[] responses = {1, 2, 6, 4, 8, 5, 9, 7, 8, 10, 1, 6, 3, 8, 6,
10, 3, 8, 2, 7, 6, 5, 7, 6, 8, 6, 7, 5, 6, 6, 5, 6, 7, 5, 6,
4, 8, 6, 8, 10};
int[] frequency = new int[ 11 ];

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

System.out.printf( "%s%10s\n", "Rating", "Frequency" );

for ( int rating = 1; rating < frequency.length; rating++ )
System.out.printf( "%d%10d\n", rating, frequency[ rating ] );

}
}

最佳答案

frequency 的索引对应于被计数的数字,其中一个索引的值是该数字的频率。它起作用是因为 responses 中的最大数量是 10frequency 的长度是 11,这意味着 code>10frequency 的有效索引(数组的最大索引总是数组长度 - 1)。

           two 1's   seven 2's
| |
v v
values: [ 0 ][ 2 ][ 7 ] ... and so on
indices: 0 1 2

您可以将++frequency[ responses[ answer ] ]; 视为“将此响应对应的频率增加一个”。

我会发现这更具可读性,因为它消除了不必要的responses[answer]噪音:

for (int response : responses)
frequency[response]++;

“对于每个响应,将响应的频率增加一个”

关于java - 数组总结(工作代码),不抓一行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27369424/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com