2013-04-24 87 views
0

我试图追踪这个,但发现很难弄清楚发生了什么事情。我也试过调试,但没有运气。Java for循环追踪

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但日食给我1,3,1,1,2 如果有人可以只追踪的第一部分,我应该能够跟随休息。任何帮助将不胜感激。

谢谢!

+2

Eclipse应该有一个调试器。使用它有什么问题? – Patashu 2013-04-24 01:09:26

+0

RE:“*我的打印输出是1,4,4,1,但日食给我1,3,1,1,2 *”这是什么意思?问题是什么? – 2013-04-24 01:10:51

+0

我尝试使用它,但我似乎迷路了。谢谢回复。 – 2013-04-24 01:10:55

回答

0

您将frequencies初始化为默认数组ints,其值为{0,0,0,0,0}。

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

第0个元素,frequencies包含numbers每个特定数量的频率,从0到4,从而导致frequencies {1,3,1,1,2}的数组。玩得很开心,一旦你做到了!希望能帮助到你!

+0

非常感谢,这让我更有意义,也许我只是需要休息一下。我不知道为什么我会把我的头部弄坏。现在我看到它就像duhhh!再次感谢大家和leoshnoire:D – 2013-04-24 03:11:15

+0

没问题,这是一种乐趣! – leoshnoire 2013-04-24 05:18:50

0

你打印出来不应该是1,4,4,1,因为你是遍历频率5倍

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

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