2012-11-09 77 views
0

可能缺少一些基本的東西,但我在我的程序中有一個for循環,應該遍歷數組(lines[])並在屏幕上繪製它們使用LWJGL/Slick)。
而不是線條顯示在單獨的行(在(i*16 + 7, 5)),他們都出現在(7, 5)用於循環的Java - (i * 16)對所有i值爲0

for(int i = 0; i < lines.length; i++) { 
    if(lines[i] != null) { 
    f.drawString((i * 16) + 7, 5, lines[i]); 
    } 
} 

被調用函數使用它之前,我已經看到了被改變的提示在循環定義最終變量,以避免值等問題的答案。所以,我已經改變了代碼:

for(int i = 0; i < lines.length; i++) { 
    if(lines[i] != null) { 
    final int i2 = i; 
    f.drawString((i2 * 16) + 7, 5, lines[i]); 
    } 
} 

但它不解決它(並沒有真正指望它,因爲我沒有得到停留在我的最後一個值和光滑不應該存儲我的價值,但試圖確保)。


拉帶的頭如下:

public void drawString(float x, float y, String whatchars) 
+0

(請記住)如果我== 0,我* 16 == 0太。 – sschrass

+0

我認爲你可能會以錯誤的順序發表你的觀點。什麼樣的對象是'f'(修正錯誤的對象名稱) –

+0

對於第一次迭代,是的,但是當我在下一次迭代中增加到1時,1 * 16似乎也被評估爲0。 – GinjaNinja32

回答

2

我想我的評論提供的答案,所以我會後爲他人提供幫助。

正確調用是擺在抵消Ÿ參數功能:

f.drawString(7, (i * 16)+5, lines[i]); 

由於函數的定義是:

public void drawString(float x, float y, String whatchars) 
0

我認爲你需要改變y協調不是x如下:

for(int i = 0; i < lines.length; i++) { 
    if(lines[i] != null) { 
    f.drawString(7, (i * 16) +5, lines[i]); 
    } 
} 

這將打印從x = 7y varying from 5 to 20的行。

相關問題