可能缺少一些基本的东西,但我的程序中有一个 for 循环,它应该遍历数组 ( lines[]
) 并将它们绘制在屏幕上(使用 LWJGL/Slick)。
而不是在单独的行 (at (i*16 + 7, 5)
) 上显示这些行,它们都出现在(7, 5)
.
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]);
}
}
但它并没有解决它(真的没想到它会这样,因为我没有陷入 i 的最后一个值,而 Slick 不应该存储 i 的值,但尝试了它以确保)。
drawString 的头部如下:
public void drawString(float x, float y, String whatchars)