我是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是的,因为他不理解增量,因此强调了这一点。