2011-11-10 22 views
1

好吧,這會顯得非常愚蠢,但請耐心等待。一年前,我做了一個小程序,對圖像進行各種操作,現在我有點生疏,不得不做類似的事情。我正在查看舊的應用程序,以幫助我開始,但有一件非常簡單的事情,我的頭不想了解剛纔的邏輯。基本上,我在圖像中的每個像素中循環以便在該位置執行某些操作,現在什麼都沒有關係。這裏是基本的想法:關於遍歷圖像中的每個像素的簡單問題

for (int x = 0; x < inputImage.getWidth(); x++) { 
    for(int y = 0; y < inputImage.getHeight(); y++) { 
     *code in here* 
    } 
} 

現在我不明白這是什麼。當然,嵌套for循環的邏輯意味着在每個循環之後,x和y都會遞增。所以在第一遍中,x = 0,y = 0。第二遍,x = 1,y = 1等等。這意味着你只選擇從圖像左上角到右下角的對角線像素,錯過了大量的像素,比如位於x = 0,y = 1處的像素。我知道這很簡單並且確實使得感覺,但我只是沒有得到現在的邏輯!非常感謝。

+1

您是否嘗試過運行兩個嵌套循環並打印變量? – DerMike

回答

1

不,這不是什麼嵌套循環。 y循環完全在x循環體內(這意味着要嵌套),所以整個循環都在x循環的每次迭代中運行。

x = 0 
    y = 0, y = 1, y = 2, ... 
x = 1 
    y = 0, y = 1, y = 2, ... 

你想的,只有遍歷對角線元素的行爲,可以這樣來實現,如果你想它:

for (int x = 0, int y = 0; 
      x < inputImage.getWidth && y < inputImage.getHeight; 
      x++, y++) { 
    // stuff 
} 

聲明同時xy如何在同一遞增循環;沒有嵌套的「subloop」。 (免責聲明:我有一段時間沒有完成Java,我可能已經搞亂了一些語法)

+0

謝謝。我知道這是一件非常簡單的事情,從我做任何編程開始,這已經太久了。上帝知道我將如何管理更復雜的問題。我意識到在我發佈這張舊紙筆出來之後不久就會發揮作用,這是一筆寶貴的但遺忘的工具集。 – cherryduck

1

不,xy實際上並沒有同時增加。

y0inputImage.height-1爲每x0inputImage.width-1。這意味着,在移動到圖像上的另一列之前,您完全遍歷第一列,依此類推。

+0

這應該是'inputImage.height - 1'和'inputImage.width - 1'。 –

+0

謝謝。我編輯以反映您的建議。 – dipesh