gpt4 book ai didi

java - 如何在java中延迟循环点数组?

转载 作者:行者123 更新时间:2023-11-29 07:50:19 25 4
gpt4 key购买 nike

我正在尝试延迟遍历点数组,但什么也没发生,我也没有收到错误。这是我的代码的示例:

public class Class {    
private Point[] points;
private int start, delay;

public Class() {
points = new Point[] {
new Point(1, 1),
new Point(2, 1),
new Point(1, 2)
};
start = System.nanoTime();
delay = 500;
}

public void update() {
for(int i = 0; i < points.length; i++) {
long elapsed = (System.nanoTime() - startT) / 1000000;
if(elapsed > delay) {
System.out.println("x: " + points[i].x);
System.out.println("y: " + points[i].y);
start = System.nanoTime();
}
}
}
}

除了 for 循环外,update 函数中的所有内容都正常工作。

编辑:这是一个只有 1 个线程的 Java Swing 应用程序。

最佳答案

您的问题之一是您使用的是 if block 而不是 while 循环。 if block 只检查一次,发现条件为假,然后跳过它。 while 循环将循环直到条件为假。

  • 对于大多数延迟,您可以将通用 Timer 对象(例如 java.util.Timer)与 java.util.TimerTask 对象一起使用。
  • 对于 Swing GUI 中的延迟,您可以使用 javax.swing.Timer
  • 一般非 Swing 计算的其他选项,包括使用包含 Thread.sleep(...) 调用的 while 循环。
  • 还考虑使用 ScheduledThreadPoolExecutor 来处理非 Swing 延迟。

编辑
关于您的编辑:

edit: It's a java Swing application with only 1 thread.

如果您需要更多帮助,那么正如我们已经提到的,请在您的问题中提供更多详细信息。

关于java - 如何在java中延迟循环点数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21687385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com