我试过跟踪这个,但发现很难弄清楚发生了什么。我也尝试过调试,但没有运气。
public class bob {
public static void main(String[] args) {
int[][] numbers = {{1, 0}, {4, 1}, {2, 3}, {1, 4}};
int[] frequencies = new int[5];
for (int row = 0; row < numbers.length; row++)
for (int col = 0; col < numbers[row].length; col++) {
frequencies[numbers[row][col]]++;
}
for (int i = 0; i < frequencies.length; i++)
System.out.print(frequencies[i] + " ");
}
}
我的打印出来是1,4,4,1
,但是eclipse给了我1,3,1,1,2
如果有人可以追踪第一部分,我应该能够完成其余部分。任何帮助将不胜感激。
谢谢!
答案 0 :(得分:0)
您的打印件不应为1,4,4,1
,因为您循环频率 5次 。
1,3,1,1,2
是正确的输出。
我建议您在外部for-loop
(行)中添加大括号,因为如果在内循环之后添加代码,它将不会成为主循环的一部分。< / p>
答案 1 :(得分:0)
首先将frequencies
初始化为ints
的默认数组,其值为{0,0,0,0,0}。
在遍历循环时,使用numbers
数组提供的索引访问此默认数组,然后在frequencies[numbers[row][col]]
处递增每个int。因此,在第一次传递时,您将frequencies
的第一个元素增加1;在下一次传递中,您将frequencies
的第0个元素增加1。
因此,在迭代结束时,frequencies
包含numbers
中每个特定数字的频率,从0到4,从而产生frequencies
{1,3,1,1,2}的数组。一旦你做到这一点,很容易理解和直截了当!希望它有所帮助!