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

Java 如何使打印语句的输出在显示时延迟一秒钟?,java,Java,这里我有一个简单的Java程序,可以计算斐波那契数列的个数。它工作得很好。没有bug。该程序询问用户希望看到多少个斐波那契数列。这里唯一值得注意的“问题”是,这些数字几乎是自发计算和显示的。如果用户要求输入大量数字,则会显示所有数字。然后,用户必须向上滚动才能从一开始就读取所有内容。我认为最好将显示数字的println语句延迟一秒钟,以提高可读性。用户将有机会一次阅读每个数字!达到这种效果的专业方法是什么?我需要一个语句,使程序在显示每个数字后等待一点。我应该在代码中添加什么?这是我的密码: i

这里我有一个简单的Java程序,可以计算斐波那契数列的个数。它工作得很好。没有bug。该程序询问用户希望看到多少个斐波那契数列。这里唯一值得注意的“问题”是,这些数字几乎是自发计算和显示的。如果用户要求输入大量数字,则会显示所有数字。然后,用户必须向上滚动才能从一开始就读取所有内容。我认为最好将显示数字的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;
公共类fibonaccified{
公共静态void main(字符串[]args){
System.out.print(“此程序将打印数据”);
System.out.println(“斐波那契数列”);
系统输出打印(“\n”);
扫描仪键盘=新扫描仪(System.in);
System.out.println(“您想要多少个数字?”);
int numbers=keyboard.nextInt();
系统输出打印(“\n”);
int num1=0,num2=1,num3;
对于(int z=0;z
之后为
添加
线程。sleep(1000)
(1000表示毫秒,您也可以执行
TimeUnit.SECONDS。sleep(1)
更明确)for

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

您只需使用
thread.sleep(毫秒)

例如,就在For循环之后:

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

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();
        }
     }
   }
}
import java.util.Scanner;
公共类fibonaccified{
公共静态void main(字符串[]args){
System.out.print(“此程序将打印数据”);
System.out.println(“斐波那契数列”);
系统输出打印(“\n”);
扫描仪键盘=新扫描仪(System.in);
System.out.println(“您想要多少个数字?”);
int numbers=keyboard.nextInt();
系统输出打印(“\n”);
int num1=0,num2=1,num3;
对于(int z=0;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
  }

}

您还可以在每次循环迭代后执行以下操作:

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

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


TimeUnit提供了将程序执行暂停从纳秒到几天的灵活性。

在我看来,将计算结果输出到一个文件将是理想的解决方案。让用户选择。让他们通过管道将输出传输到
更多的
,例如
java FibonacciModified | more
。现在他们一次可以得到一页。或者
java FibonaCCIMedited | less
用于分页支持(向后/向前滚动)。或者……简言之:让用户选择NetBeans显示此错误:未报告的异常InteruptedException;必须捕获或声明为抛出。我在上面写道,您需要处理它,并且我添加了一个示例(更改主方法签名)。这很好,但它不接受小数,例如0.5。当使用类型转换运算符时,此代码不会等待。@Galaxy如果要停止执行半秒,则可以这样使用它。…TimeUnit.millides.sleep(500);这将停止执行半秒。TimeUnit始终接受其sleep方法的长类型变量。
public void printWithSleep(int x){
  try{
     Thread.sleep(1000);
     System.out.println(x);

  } catch(Exception e){
    //Eat or print the exception
  }

}