如何暂停我的 Java 程序 2 秒

How to pause my Java program for 2 seconds

我是 Java 的新手,正在制作一个小游戏作为练习。

if (doAllFaceUpCardsMatch == false) {
        //run pause here//
        concentration.flipAllCardsFaceDown();
} else {
        concentration.makeAllFaceUpCardsInvisible();
}

我想在此之前暂停游戏两秒

concentration.flipAllCardsFaceDown();

我该如何暂停它?

您可以在此处找到类似的 post:How to delay in Java?

基本上是旧 post 中所说的。你可以使用 java.util.concurrent.TimeUnit

    import java.util.concurrent.TimeUnit;

    if (doAllFaceUpCardsMatch == false) {
        TimeUnit.SECONDS.sleep(2);
        concentration.flipAllCardsFaceDown();
    } else {
        concentration.makeAllFaceUpCardsInvisible();
    }

您可以使用:

 Thread.sleep(2000);

java.util.concurrent.TimeUnit.SECONDS.sleep(2);

请注意,这两个方法都会抛出 InterruptedException,这是一个已检查的异常,因此您必须捕获它或在方法中声明。

编辑: 捕获异常后,您的代码将如下所示:

if (doAllFaceUpCardsMatch == false) {
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        concentration.flipAllCardsFaceDown();
} else {
        concentration.makeAllFaceUpCardsInvisible();
}

由于您是新手,我建议您在熟悉 java 后学习如何进行异常处理。

您可以使用 Thread.currentThread().sleep(2000) 暂停当前线程 2 秒(2000 毫秒)。如果是 InterruptedExceptions.

,你应该用 try/catch 包围它

对于那些只想快速破解而无需带入图书馆的人...

public class Timing {
    public static void main(String[] args) {
            int delay = 1000; // number of milliseconds to sleep

            long start = System.currentTimeMillis();
            while(start >= System.currentTimeMillis() - delay); // do nothing

            System.out.println("Time Slept: " + Long.toString(System.currentTimeMillis() - start));
    }
}

对于高精度 60fps 游戏,这可能不是您想要的,但也许有些人会发现它有用。

另一种非常简单的方法是创建以下方法:

public static void pause(long timeInMilliSeconds) {

    long timestamp = System.currentTimeMillis();


    do {

    } while (System.currentTimeMillis() < timestamp + timeInMilliSeconds);

}