【问题标题】:drawString in loop writes only once instead of multiple times [closed]循环中的drawString只写一次而不是多次[关闭]
【发布时间】:2013-10-13 23:56:38
【问题描述】:

这段代码会做什么?

for(int i = 0; i < enemysno; i++){
    g.drawString("\nArray size: " + i, 200, 200);
}  

enemysno 是一个介于 0 和 10 之间的随机数,并且工作正常。问题是,它循环一次,但在第一次迭代后停止添加新行。

作为伪代码,我虽然 i 以 0 开头。然后比较条件,如果为假,则执行代码,然后进行 ++ 迭代,然后重复循环?

最后,我想将 n 个对象添加到一个数组中,但我完全可以让它工作简单的数组工作!

【问题讨论】:

  • 你应该首先使用System.out.println而不是g.drawString来关注循环问题。
  • @dystroy 是对的:字符串只是在画布上相互覆盖......
  • 你试过调试你的代码吗?
  • @K.L.为什么会尝试,我们是来解决的
  • @MarounMaroun 你只是用你的链接来欺骗我。哈!!!!

标签: java loops for-loop


【解决方案1】:

一个简单的测试证明循环确实按预期工作:

 public static void main(String[] args)
    {
        int enemysno = 5;
        for (int i = 0; i < enemysno; i++)
        {
            System.out.println("lalala " + i);
        }
    }

这个效果很好

lalala 0
lalala 1
lalala 2
lalala 3
lalala 4

这很明显,但是通过调试或这样的测试,您可以确定循环本身被输入了所需的次数。问题一定出在您的字符串显示中:很可能您的 drawString 方法每次都会覆盖打印的字符串。

如果您检查了输出中的数字,应该很明显。

解决方案?

使用字符串生成器连接部分字符串,然后使用您的 drawString 方法绘制最终字符串

【讨论】:

  • 感谢您对此的帮助。我知道这是一个愚蠢的问题,但现在我已经创建了我的敌人数组,它们都使用 for 循环填充我的屏幕。所以你们真的帮了很多忙!之前出现问题的原因是我的循环在 render() 类中。它继续前进!我把它移到了 init() 类,现在它完美了
猜你喜欢
  • 1970-01-01
  • 2016-11-09
  • 2021-05-06
  • 1970-01-01
  • 2017-03-13
  • 2016-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多