我是java编程的新手,在学习数组时,我偶然发现了一个对数组进行预递增的代码,我无法理解它 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,6,7,5,6,5,5,6,4,8,6,8,8,10}; 整数频率[]=新整数[11];//频率计数器阵列 //对于每个答案,选择responses元素并使用该值 //作为频率指标来确定元素的增量 for(int-answer=0;answer

我是java编程的新手,在学习数组时,我偶然发现了一个对数组进行预递增的代码,我无法理解它 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,6,7,5,6,5,5,6,4,8,6,8,8,10}; 整数频率[]=新整数[11];//频率计数器阵列 //对于每个答案,选择responses元素并使用该值 //作为频率指标来确定元素的增量 for(int-answer=0;answer,java,arrays,Java,Arrays,您需要使用循环来显示结果: 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 ]; // array of frequency counters // for each

您需要使用循环来显示结果:

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 ]; // array of frequency counters

        // for each answer, select responses element and use that value
        // as frequency index to determine element to increment
        for ( int answer = 0; answer < responses.length; answer++ )
           **++frequency[ responses[ answer ] ];**

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

        // output each array element's value
answer   response[answer]     frequency[response[answer]]    ++frequency[response[answer]]
 0             1             frequency[1]=0                      frequency[1]=1
 1             2             frequency[2]=0                      frequency[2]=1                 
 2             6             frequency[6]=0                      frequency[6]=1
 3             4             frequency[4]=0                      frequency[4]=1
 4             8             frequency[8]=0                      frequency[8]=1
 5             5             frequency[5]=0                      frequency[5]=1
 6             9             frequency[9]=0                      frequency[9]=1
 7             7             frequency[7]=0                      frequency[7]=1
 8             8            **frequency[8]=1**                 **frequency[8]=2**
for(int i=0;i
否则,删除注释外的“*”,它将编译

answer   response[answer]     frequency[response[answer]]    ++frequency[response[answer]]
 0             1             frequency[1]=0                      frequency[1]=1
 1             2             frequency[2]=0                      frequency[2]=1                 
 2             6             frequency[6]=0                      frequency[6]=1
 3             4             frequency[4]=0                      frequency[4]=1
 4             8             frequency[8]=0                      frequency[8]=1
 5             5             frequency[5]=0                      frequency[5]=1
 6             9             frequency[9]=0                      frequency[9]=1
 7             7             frequency[7]=0                      frequency[7]=1
 8             8            **frequency[8]=1**                 **frequency[8]=2**

它所做的只是将数组的值用作索引,以便对它们进行计数。因此,当遇到“5”时,频率数组中的第5个元素将递增,因为至少有一个“5”。

答案是数组的索引,响应[answer]将给出该索引处的值,然后我们将递增频率中的索引值(即响应[answer])

for ( int i = 0; i < responses.length; i++ )
    System.out.printf( "Number of %d: %d\n", i, frequency[i] );
answer   response[answer]     frequency[response[answer]]    ++frequency[response[answer]]
 0             1             frequency[1]=0                      frequency[1]=1
 1             2             frequency[2]=0                      frequency[2]=1                 
 2             6             frequency[6]=0                      frequency[6]=1
 3             4             frequency[4]=0                      frequency[4]=1
 4             8             frequency[8]=0                      frequency[8]=1
 5             5             frequency[5]=0                      frequency[5]=1
 6             9             frequency[9]=0                      frequency[9]=1
 7             7             frequency[7]=0                      frequency[7]=1
 8             8            **frequency[8]=1**                 **frequency[8]=2**
伪代码:

answer   response[answer]     frequency[response[answer]]    ++frequency[response[answer]]
 0             1             frequency[1]=0                      frequency[1]=1
 1             2             frequency[2]=0                      frequency[2]=1                 
 2             6             frequency[6]=0                      frequency[6]=1
 3             4             frequency[4]=0                      frequency[4]=1
 4             8             frequency[8]=0                      frequency[8]=1
 5             5             frequency[5]=0                      frequency[5]=1
 6             9             frequency[9]=0                      frequency[9]=1
 7             7             frequency[7]=0                      frequency[7]=1
 8             8            **frequency[8]=1**                 **frequency[8]=2**
给定:响应从1到10的响应数组

answer   response[answer]     frequency[response[answer]]    ++frequency[response[answer]]
 0             1             frequency[1]=0                      frequency[1]=1
 1             2             frequency[2]=0                      frequency[2]=1                 
 2             6             frequency[6]=0                      frequency[6]=1
 3             4             frequency[4]=0                      frequency[4]=1
 4             8             frequency[8]=0                      frequency[8]=1
 5             5             frequency[5]=0                      frequency[5]=1
 6             9             frequency[9]=0                      frequency[9]=1
 7             7             frequency[7]=0                      frequency[7]=1
 8             8            **frequency[8]=1**                 **frequency[8]=2**
使用默认值0初始化空频率数组 (频率[0]、频率[1]、频率[2]、频率[3]、…、频率[9]、频率[10])

answer   response[answer]     frequency[response[answer]]    ++frequency[response[answer]]
 0             1             frequency[1]=0                      frequency[1]=1
 1             2             frequency[2]=0                      frequency[2]=1                 
 2             6             frequency[6]=0                      frequency[6]=1
 3             4             frequency[4]=0                      frequency[4]=1
 4             8             frequency[8]=0                      frequency[8]=1
 5             5             frequency[5]=0                      frequency[5]=1
 6             9             frequency[9]=0                      frequency[9]=1
 7             7             frequency[7]=0                      frequency[7]=1
 8             8            **frequency[8]=1**                 **frequency[8]=2**
对于响应数组的每个值

answer   response[answer]     frequency[response[answer]]    ++frequency[response[answer]]
 0             1             frequency[1]=0                      frequency[1]=1
 1             2             frequency[2]=0                      frequency[2]=1                 
 2             6             frequency[6]=0                      frequency[6]=1
 3             4             frequency[4]=0                      frequency[4]=1
 4             8             frequency[8]=0                      frequency[8]=1
 5             5             frequency[5]=0                      frequency[5]=1
 6             9             frequency[9]=0                      frequency[9]=1
 7             7             frequency[7]=0                      frequency[7]=1
 8             8            **frequency[8]=1**                 **frequency[8]=2**

在最后一行中,现在8的频率增加了。因此,通过这种方式,它将显示每个响应的频率。

由于没有使用该操作的值,因此递增前和递增后的结果相同。因此:

answer   response[answer]     frequency[response[answer]]    ++frequency[response[answer]]
 0             1             frequency[1]=0                      frequency[1]=1
 1             2             frequency[2]=0                      frequency[2]=1                 
 2             6             frequency[6]=0                      frequency[6]=1
 3             4             frequency[4]=0                      frequency[4]=1
 4             8             frequency[8]=0                      frequency[8]=1
 5             5             frequency[5]=0                      frequency[5]=1
 6             9             frequency[9]=0                      frequency[9]=1
 7             7             frequency[7]=0                      frequency[7]=1
 8             8            **frequency[8]=1**                 **frequency[8]=2**
    increment the value of frequency array 
是否与此相同:

answer   response[answer]     frequency[response[answer]]    ++frequency[response[answer]]
 0             1             frequency[1]=0                      frequency[1]=1
 1             2             frequency[2]=0                      frequency[2]=1                 
 2             6             frequency[6]=0                      frequency[6]=1
 3             4             frequency[4]=0                      frequency[4]=1
 4             8             frequency[8]=0                      frequency[8]=1
 5             5             frequency[5]=0                      frequency[5]=1
 6             9             frequency[9]=0                      frequency[9]=1
 7             7             frequency[7]=0                      frequency[7]=1
 8             8            **frequency[8]=1**                 **frequency[8]=2**
++frequency[ responses[ answer ] ];
其作用与:

answer   response[answer]     frequency[response[answer]]    ++frequency[response[answer]]
 0             1             frequency[1]=0                      frequency[1]=1
 1             2             frequency[2]=0                      frequency[2]=1                 
 2             6             frequency[6]=0                      frequency[6]=1
 3             4             frequency[4]=0                      frequency[4]=1
 4             8             frequency[8]=0                      frequency[8]=1
 5             5             frequency[5]=0                      frequency[5]=1
 6             9             frequency[9]=0                      frequency[9]=1
 7             7             frequency[7]=0                      frequency[7]=1
 8             8            **frequency[8]=1**                 **frequency[8]=2**
frequency[ responses[ answer ] ]++;

代码所做的是增加
频率
数组中与
响应
数组中的项目相对应的项目。它只计算
响应
数组中每个值的数量。

首先:使用
40
值创建
响应
数组:

answer   response[answer]     frequency[response[answer]]    ++frequency[response[answer]]
 0             1             frequency[1]=0                      frequency[1]=1
 1             2             frequency[2]=0                      frequency[2]=1                 
 2             6             frequency[6]=0                      frequency[6]=1
 3             4             frequency[4]=0                      frequency[4]=1
 4             8             frequency[8]=0                      frequency[8]=1
 5             5             frequency[5]=0                      frequency[5]=1
 6             9             frequency[9]=0                      frequency[9]=1
 7             7             frequency[7]=0                      frequency[7]=1
 8             8            **frequency[8]=1**                 **frequency[8]=2**
frequency[ responses[ answer ] ] = frequency[ responses[ answer ] ] + 1;
然后用长度=
11
创建
frequency
,为什么是11?因为
响应
数组中的值范围从
1
11
,并且您要计算数字重复的次数(例如:数字1重复2次,数字6重复11次):

answer   response[answer]     frequency[response[answer]]    ++frequency[response[answer]]
 0             1             frequency[1]=0                      frequency[1]=1
 1             2             frequency[2]=0                      frequency[2]=1                 
 2             6             frequency[6]=0                      frequency[6]=1
 3             4             frequency[4]=0                      frequency[4]=1
 4             8             frequency[8]=0                      frequency[8]=1
 5             5             frequency[5]=0                      frequency[5]=1
 6             9             frequency[9]=0                      frequency[9]=1
 7             7             frequency[7]=0                      frequency[7]=1
 8             8            **frequency[8]=1**                 **frequency[8]=2**
然后,您将在
响应
数组上循环

answer   response[answer]     frequency[response[answer]]    ++frequency[response[answer]]
 0             1             frequency[1]=0                      frequency[1]=1
 1             2             frequency[2]=0                      frequency[2]=1                 
 2             6             frequency[6]=0                      frequency[6]=1
 3             4             frequency[4]=0                      frequency[4]=1
 4             8             frequency[8]=0                      frequency[8]=1
 5             5             frequency[5]=0                      frequency[5]=1
 6             9             frequency[9]=0                      frequency[9]=1
 7             7             frequency[7]=0                      frequency[7]=1
 8             8            **frequency[8]=1**                 **frequency[8]=2**
   int frequency[] = new int[ 11 ]; // this array with 0 values at each index
输出为:

answer   response[answer]     frequency[response[answer]]    ++frequency[response[answer]]
 0             1             frequency[1]=0                      frequency[1]=1
 1             2             frequency[2]=0                      frequency[2]=1                 
 2             6             frequency[6]=0                      frequency[6]=1
 3             4             frequency[4]=0                      frequency[4]=1
 4             8             frequency[8]=0                      frequency[8]=1
 5             5             frequency[5]=0                      frequency[5]=1
 6             9             frequency[9]=0                      frequency[9]=1
 7             7             frequency[7]=0                      frequency[7]=1
 8             8            **frequency[8]=1**                 **frequency[8]=2**
 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]; // array of frequency counters

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

        for (int i = 0; i < frequency.length; i++) {
            System.out.println(i + "   "  + frequency[i]);

        }

你的问题是什么?它无法成功编译。再查一遍。提示:***@Karna是的,因为他不理解增量,因此强调了这一点。