Разбить строку на слова БЕЗ регулярных выражений
public class SequentialWordsNumbers {
public static void main(String[] args) {
String str = "Это просто текст, для примера работы программы";
System.out.println(sequentialWordsNumbers(str));
}
public static String sequentialWordsNumbers(String text){
StringBuilder stringBuilder = new StringBuilder();
int num = 0;
String word = "";
for (int i = 0; i < text.length(); i++) {
if (text.charAt(i) != ' ') {
word = word + text.charAt(i);
} else {
num++;
stringBuilder.append(" (" + num + ") " + word);
word = "";
}
}
return stringBuilder.toString();
}
}
Код должен строку делить на слова без регулярных выражений.
Задание такое: Нужно написать метод sequentialWordsNumbers, который в качестве аргумента принимает текст и перед каждым словом пишет его порядковый номер в круглых скобках и возвращает строку. Метод необходимо написать без использования регулярных выражений. Пример того, как оно должно работать:
Введите текст: Это просто текст, для примера работы программы Результат: (1) Это (2) просто (3) текст, (4) для (5) примера (6) работы (7) программы
Результат моего кода такой (как и требует задание): (1) Это (2) просто (3) текст, (4) для (5) примера (6) работы (7) программы
Я в процессе изучения Java. Это одно из заданий. Тестирование не проходит. Добавляю скрин с автотестированием. Подскажите, плз, на что обратить внимание?

Ответы (2 шт):
public static String sequentialWordsNumbers(String text) {
StringBuilder stringBuilder = new StringBuilder();
int num = 0;
String word = "";
String newText = text.trim() + " ";
if (text == "") {
}
else {
for (int i = 0; i < newText.length(); i++) {
if (newText.length() <= 2 && !Character.isLetter(newText.charAt(i))) {
word = "";
}
if (newText.charAt(i) != ' ' && newText.length() > 2) {
word = word + newText.charAt(i);
} else {
num++;
stringBuilder.append(" (" + num + ") " + word);
word = "";
}
}
}
return stringBuilder.toString().trim();
}
Это решение прошло тестирование!!
большое спасибо за правильную идею. Если бы не stringBuilder.append(" (" + num + ") " + word); никогда бы в жизни не догадался. И так крутил и этак.Сначала добавлял счетчик вначале текста, потом внутри цикла. Еще раз огромное спасибо. Но данный код излишне большой и нерациональный. Я сделал так:
for (int i = 0; i < text.length(); i++) {
int end = text.indexOf(' ' ,start);
if (end == -1) {
sb.append(`введите сюда код`(" (" + count + ") " +
text.substring(start)));
return sb.toString().trim();
}
text.substring(start, end);
sb.append((" (" + count + ") " +text.substring(start, end)));
count++;
start = end + 1;
}
return sb.toString().trim();
Тест пройден