2016-07-15 7 views
0

Also habe ich eine kleine Funktion namens typePhrase verwendet, und es erlaubt mir, es eine beliebige Zeichenfolge zu geben, und es wird es in der Konsole gedruckt, Buchstabe für Buchstabe.Java print Zeichen für Zeichen

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 " "; 
} 

Ich frage mich, ob es eine Möglichkeit ist, eine Funktion wie diese zu machen, aber auf einmal viele Briefe drucken, zum Beispiel alle 50 Millisekunden es alle zusammen aus 7 Buchstaben drucken. Der Code, den ich jetzt verwende, druckt alle 50 Millisekunden einen Buchstaben.

+0

können Sie jedoch viele Charac drucken Wenn Sie die Länge überprüfen und sicherstellen, dass Sie die Array-Indizes nicht überschreiten, d. h. IOBException verursachen. – ha9u63ar

+2

Betrachten Sie 'Thread.sleep (50)' anstelle von while (= busy loop). Und vergleichen Sie im Task-Manager die CPU-Auslastung. J) –

+0

@ ha9u63ar Ich denke du meinst IOException nicht IOBException, weil ich so etwas im Internet nicht finden kann. – GOXR3PLUS

Antwort

2

ändern

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

zu

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

und

phrase.charAt(i) 

zu

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

genau wie ha9u63ar sagte, wird dies in der Lage sein, die IOBException zu stoppen? oder müsste ich auch versuchen/fangen? –

+0

@ R.Duggan Die Schleife wird weg sein, wenn ich aus der Array-Länge austritt, also ja es wird ohne einen Versuch zu fangen funktionieren. Aber versuchen Sie in diesen Fällen versuchen, fangen Sie, wenn etwas schief geht. – ha9u63ar

+0

@ R.Duggan gibt es hier keine IOBException, die vom Loop Guard und dem 'Math.min' behandelt wird. –