使用for循环进行Java跟踪

时间:2013-04-24 01:07:13

标签: java loops for-loop tracing

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

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

谢谢!

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}的数组。一旦你做到这一点,很容易理解和直截了当!希望它有所帮助!