0

我试过追踪这个,但发现很难弄清楚发生了什么。我也尝试过调试,但没有运气。

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 如果有人可以追踪第一部分,我应该能够关注其余部分。任何帮助将不胜感激。

谢谢!

4

2 回答 2

0

您的打印输出不应该1,4,4,1,因为您在频率上循环了 5 次

1,3,1,1,2是正确的输出。

我建议您在外部for-loop (rows)中添加大括号,因为如果您在内部循环之后添加代码,它将不会成为主循环的一部分。

于 2013-04-24T01:37:18.573 回答
0

您首先初始化frequenciesints具有值 {0,0,0,0,0} 的默认数组。

在遍历循环时,您可以使用数组提供的索引访问此默认数组numbers,然后在 处递增每个 int frequencies[numbers[row][col]]。因此,在您的第一次通过时,您将增加 1 的第一个元素frequencies;在您的下一次通过时,您将 的第 0 个元素增加frequencies1。

因此,在您的迭代结束时,frequencies包含中每个特定数字的频率numbers,从 0 到 4,从而产生frequencies{1,3,1,1,2} 的数组。弄清楚非常有趣,一旦你这样做就很简单!希望能帮助到你!

于 2013-04-24T01:48:34.080 回答