Вопрос:
Как в заикании количество раз, указанное предоставленным множителем, если текст был “деканом” и множителем 3, результатом будет “dddeeeaaannn”.
public static void repeatLetters() { String text = «dean»; int n = 3; StringBuilder repeat = new StringBuilder(text); for (int i = 0; i < n; i++) { repeat.append(«dean»); } System.out.println(text); }
Не получить требуемый результат. Что я делаю не так?
Лучший ответ:
Вы просто добавляете строку n раз для каждого символа в ней. Вам нужно выполнить итерацию по строке и добавить каждый символ n раз.
public static void repeatLetters() { String text = «dean»; int n = 3; StringBuilder repeat = new StringBuilder(); for (int i = 0; i < text.length(); i++) { for (int j = 0; j < n; j++) { repeat.append(text.charAt(i)); } } System.out.println(repeat); }
Кроме того, другим решением будет использование регулярных выражений.
public static void repeatLetters() { String text = «dean», replace = «»; int n = 3; for (int i = 0; i < n; i++) replace += «$1»; System.out.println(text.replaceAll(«(.)», replace)); } Ответ №1
Две проблемы:
-
Вы не печатаете строку, которую вы манипулировали, вы печатаете оригинальную строку, с которой вы начали, т.е. «dean». Чтобы напечатать строку из StringBuilder, вы можете использовать
System.out.println (повтор);
-
Вы добавляете целое слово «dean» к своему оригинальному слову вместо добавления отдельных букв/символов. Вам нужно повторить каждую букву в исходном слове и добавить эти буквы в пустой StringBuilder. Вот основная логика, которую вы должны использовать, чтобы добиться успеха:
- Получите оригинальное слово (“dean”)
- Создать пустой StringBuilder
- Проанализируйте каждую букву исходного слова (“dean”) либо с помощью цикла for, либо с помощью каждого символа в строке или с помощью String.split и разбора массива.
- Для каждой буквы в вашем исходном слове добавьте это письмо с этой буквой n раз в свой StringBuilder.
- Распечатайте строку из StringBuilder после того, как вы проанализировали все буквы исходного слова.
Ответ №2
Вы просто добавляете слово “декан” в конец строки три раза.
Попробуйте вместо этого прокрутить каждый символ в слове dean и добавить этот символ три раза.
Что-то вроде этого (это псевдокод):
StringBuilder repeat = new StringBuilder(); ForEach( letter in «dean» ) For( int i = 0 ; i < 3 ; i++ ) repeat.add(letter); Return repeat Ответ №3
Вы повторяете здесь все слова. Возможное исправление
public static void repeatLetters() { String text = «dean»; int n = 3; StringBuilder repeat = new StringBuilder(); for (int i = 0; i < text.length() ; i++) { for (int j= 0; j< n; j++) repeat.append(text.charAt(i)); } System.out.println(repeat); }