这有点难以解释。我对此事进行了一些谷歌搜索,但没有发现任何似乎有帮助的东西。现在,我不知道是不是我的电脑限制了 IDE,(6gb ram,AMD A10-5745M APU 2.10GHz,Windows 8 64 位,目前看来 IDE 可以使用的最大容量是 495M,虽然它从未超过 70M)在进一步解释问题之前,我将分享我的代码:到目前为止我写的唯一的东西。
public void readText(String text){
String textArray[]= new String[text.length()];
for(int b = 0; b <text.length(); b++){
String countText = text;
textArray[b] = countText.substring(b,b+1);
}
for(int countPrint = 0; countPrint < textArray.length; countPrint++){
System.out.print(textArray[countPrint]);
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
所以基本上,我的方法所做的是,它以延迟的间隔逐个字符地读取文本。所以如果我调用readText("Hello");
它会打印H
(wait 50 ms) e
(wait 50 ms) l
(etc.) 等等,所以看起来有人在打字。(我打算使用计时器,但通过谷歌搜索和从这个站点,我发现它Thread.sleep(number)
更容易设置,并且占用的空间更少)
现在我已经解释了所有内容,问题是它并没有完全逐个字符地显示它,一旦我降低到更短的毫秒,比如 50。我选择,比如说,800 毫秒,它可以很好地读取每个字符,它几乎每秒吐出 1 个。但它变得越快,它就越结块。假设我有一句话“你好,我的狗是黄色的,我的草坪是粉红色的”。如果要Thread.sleep(50)
像代码一样打印它,它将(而不是单独打印每个字符(尽管非常快))以块的形式打印chunk1(Hel) chunk2(lo, my) chunk3(dog i) chunk4(s yello)
等等。现在,我知道我已经将其范围缩小到 IDE,因为当我在 Eclipse 中运行相同的代码时,它几乎可以完美打印(有时会打印块,但是当它打印时,它只有 2 个字符,而不是 5 或 6 个与 Jidea)我没有尝试使用 Eclipse 更快的速度,但 50 毫秒似乎并没有过多地打扰它,当然比前者运行得更精确。关于为什么它不会“实时”打印它本身的任何想法?