2016-07-15 61 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 " "; 
} 

我想知道如果有一種方法,使這樣的功能,但在一次打印大量的信件,例如,每50毫秒它會打印出7個字母都在一起。我現在使用的代碼每50毫秒打印一個字母。

+0

可以打印但是許多CHARAC只要你檢查長度並確保你沒有超過數組索引,即導致IOBException。 – ha9u63ar

+2

看看'Thread.sleep(50)'而不是while(= busy loop)。並在任務管理器中比較CPU負載。 J) –

+0

@ ha9u63ar我認爲你的意思是IOException不是IOBException,因爲我無法在Internet上找到類似的東西。 – 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有助於防止出現問題。 – ha9u63ar

+0

@ R.Duggan這裏沒有IOBException,它由循環後衛和'Math.min'處理。 –