2016-07-15 4 views
0

Итак, я использовал небольшую функцию под названием typePhrase, и это позволяет мне передать любую строку, и она будет печатать ее на консоли буквально.Java print character по символу

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 (= цикл занятости). И сравните в диспетчере задач загрузку процессора. 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 в этих случаях полезно в случае, если что-то пойдет не так. – ha9u63ar

+0

@ R.Duggan здесь отсутствует исключение IOBException, которое обрабатывается защитой цикла и 'Math.min'. –

Смежные вопросы