使文字显示延迟

时间:2013-11-09 20:46:22

标签: java text

我想以下列方式显示文字:

H
wait 0.1 seconds
He
wait 0.1 seconds
Hel
wait 0.1 seconds
Hell
wait 0.1 seconds
Hello

但我不知道该怎么办。任何帮助将不胜感激。

编辑:我希望我能够以不需要我制作System.out.print()的方式来做到这一点。每封信。

编辑3:这是我的代码。编辑4:没有更多的问题,它工作得很好,谢谢。

import java.util.Scanner;
import java.util.concurrent.TimeUnit;
public class GameBattle
{
public static void main(String[] args) throws Exception {
    printWithDelays("HELLO", TimeUnit.MILLISECONDS, 100);
}

public static void printWithDelays(String data, TimeUnit unit, long delay)
        throws InterruptedException {
    for (char ch:data.toCharArray()) {
        System.out.print(ch);
        unit.sleep(delay);
    }
}

4 个答案:

答案 0 :(得分:2)

您可以使用0.1s或更可读的方式(至少对我来说)使用Thread.sleep打印TimeUnit.MILLISECONDS.sleep间隔内的每个字母,例如

print first letter;
TimeUnit.MILLISECONDS.sleep(100);
print second letter
TimeUnit.MILLISECONDS.sleep(100);
...

<强> [更新]

  

我希望我能以一种不需要我制作System.out.print()的方式来做到这一点;每封信。

我认为没有任何理由不这样做。

public static void main(String[] args) throws Exception {
    printWithDelays("HELLO", TimeUnit.MILLISECONDS, 100);
}

public static void printWithDelays(String data, TimeUnit unit, long delay)
        throws InterruptedException {
    for (char ch:data.toCharArray()) {
        System.out.print(ch);
        unit.sleep(delay);
    }
}

答案 1 :(得分:0)

使用Thread.sleep功能暂停执行。

System.out.print("H");
Thread.sleep(1000);
System.out.print("E");
...etc

当然,您可能希望将所有这些放入循环中,但Thread.sleep是您想要的

答案 2 :(得分:0)

试试这个:

 try {
  Thread.sleep(timeInMiliseconds); // In your case it would be: Thread.sleep(100);
} catch (Exception e) {
    e.printStackTrace();
}

答案 3 :(得分:0)

String text = "Hello";

for(int i=1; i<=text.length();i++){
   System.out.println(text.substring(0, i));
    try {
       Thread.sleep(100); 
    } catch (Exception e) {
       e.printStackTrace();
    }
}

编辑: 如果你只需要1个字符,那么:

for(int i=0; i<text.length();i++){
   System.out.print(""+text.characterAt(i));
    try {
       Thread.sleep(100); 
    } catch (Exception e) {
       e.printStackTrace();
    }
}