如何使打印语句的输出延迟显示一秒钟



所以在这里我只有一个简单的Java程序来计算斐波那契数列的数量。效果很好。没有错误。程序询问用户希望看到斐波那契数列的多少个数字。这里唯一明显的"问题"是这些数字几乎是自发计算和显示的。如果用户要求非常大量的数字,它们都会显示出来。然后,用户必须向上滚动才能从头开始阅读它们。我认为最好将显示数字的 println 语句延迟一秒钟以提高可读性。用户将有机会一次阅读每个数字!达到这种效果的专业方法是什么?我需要一个语句,使程序在每个数字显示后等待一点。我应该向代码中添加什么?这是我的代码:

import java.util.Scanner;
public class FibonacciModified {
public static void main(String[] args) {
    System.out.print("This program will print out the ");
    System.out.println("Fibonacci sequence of numbers.");
    System.out.print("n");
    Scanner keyboard = new Scanner(System.in);
    System.out.println("How many numbers do you want?");
    int numbers = keyboard.nextInt();
    System.out.print("n");
    int num1 = 0, num2 = 1, num3;
    for (int z = 0; z < numbers; z++) {
        switch (z) {
            case 0:
            System.out.println(num1);
            break;
            case 1:
            System.out.println(num2);
            break;
            default:
            num3 = num1 + num2;
            System.out.println(num3);
            num1 = num2;
            num2 = num3;
            break;
        }
     }
   }
}

你来了:

import java.util.Scanner;
public class FibonacciModified {
public static void main(String[] args) {
    System.out.print("This program will print out the ");
    System.out.println("Fibonacci sequence of numbers.");
    System.out.print("n");
    Scanner keyboard = new Scanner(System.in);
    System.out.println("How many numbers do you want?");
    int numbers = keyboard.nextInt();
    System.out.print("n");
    int num1 = 0, num2 = 1, num3;
    for (int z = 0; z < numbers; z++) {
        switch (z) {
            case 0:
            System.out.println(num1);
            break;
            case 1:
            System.out.println(num2);
            break;
            default:
            num3 = num1 + num2;
            System.out.println(num3);
            num1 = num2;
            num2 = num3;
            break;
        }
        try {
            Thread.sleep(1000); // 1000 is 1 sec
        } catch(InterruptedException ex) {
            Thread.currentThread().interrupt();
        }
     }
   }
}

for后添加一个Thread.sleep(1000)(1000 表示毫秒,您也可以TimeUnit.SECONDS.sleep(1)更明确):

  for (int z = 0; z < numbers; z++) {
      Thread.sleep(1000);

您需要将InterruptedException添加到 main 的throws或在 try 块中处理异常,例如:

public static void main(String[] args) throws InterruptedException {
您也可以在

循环的每次迭代后使用以下方法:

TimeUnit.SECONDS.sleep(1);//停止执行一秒

上面在内部调用 Thread.sleep()。您在这里唯一的附加优势是,您无需计算要停止执行的毫秒数,这是 Thread.sleep(毫秒)工作所需的。

TimeUnit 可以灵活地将程序执行从纳秒暂停到天。

需要做的就是暂停主线程Thread.sleep(milliseconds)

例如,紧跟在 for 循环之后:

for (int z = 0; z < numbers; z++) {
    Thread.sleep(500);
    switch (z) {
    ...

使用以下方法,并在您调用System.out.println的所有位置调用此方法。

public void printWithSleep(int x){
  try{
     Thread.sleep(1000);
     System.out.println(x);
  } catch(Exception e){
    //Eat or print the exception
  }
}

最新更新