2013-04-24 121 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),因爲如果你在內層循環之後添加代碼,它將不會成爲主循環的一部分。