2016-07-15 5 views
0

私はtypePhraseという小さな関数を使用しています。これは文字列を与えることができ、手紙でコンソールに表示されます。Javaの文字を文字で出力する

public static String typePhrase(String phrase) { 
    for(int i = 0; i < phrase.length(); i++) { 
     long start = System.currentTimeMillis(); 
     while (System.currentTimeMillis() - start < 50) { 

     } 
     System.out.print(phrase.charAt(i)); 
    } 
    return " "; 
} 

このような関数を作る、しかし、例えば、一度にそれはすべて一緒に7つの文字を印刷します50ミリ秒ごとに文字の多くを印刷する方法がある場合、私は疑問に思って。私が今使っているコードは、50ミリ秒ごとに1文字を出力します。

+0

にあなたはしかし、多くのCHARACを印刷することができます長さをチェックし、配列インデックスを超えていないこと、つまりIOBExceptionが発生していないことを確認している限り、必要なものを探してください。 – ha9u63ar

+2

while(= busyループ)の代わりに 'Thread.sleep(50)'を見てください。タスクマネージャでCPUの負荷を比較します。 J) –

+0

@ ha9u63ar私はあなたがIOExceptionを意味しないと思うIOBException、私はインターネット上のようなものを見つけることができません。 – GOXR3PLUS

答えて

2

変更

for(int i = 0; i < phrase.length(); i++) { 

for(int i = 0; i < phrase.length(); i += 7) { 

phrase.charAt(i) 

phrase.substring(i, Math.min(i + 7, phrase.length()) 
+0

ちょうどha9u63arのように、これはIOBExceptionを停止することができますか?または私は試して/キャッチする必要がありますか? –

+0

@ R.Dugganもし私が配列の長さから抜け出すなら、ループは消えてしまいます。そうすれば、try catchなしで動作します。しかし、これらのケースでtry catchを使用すると、何かがうまくいかない場合に役立ちます。 – ha9u63ar

+0

@ R.Dugganループガードと 'Math.min'によって処理されるIOBExceptionはありません。 –

関連する問題