説明するのは少し難しいです。私はこの問題についていくつかのグーグル検索を行いましたが、それが役立つと思われるものは何も見つかりませんでした. IDE を制限しているのが私のコンピューターであるかどうかはわかりません (6 GB RAM、AMD A10-5745M APU 2.10 GHz、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で同じコードを実行したとき、ほぼ完全に印刷されたからです(チャンクを印刷することもありましたが、実際に印刷したときは、5文字や6文字ではなく、2文字だけでした. Jidea で) 私は Eclipse でより速い速度を試しませんでしたが、50ms はそれほど気にならなかったようで、確かに前者よりもはるかに正確に実行されました。「リアルタイム」自体で印刷しない理由についてのアイデアはありますか?