Разбить строку на слова БЕЗ регулярных выражений

    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 шт):

Автор решения: user501671
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();
    }

Это решение прошло тестирование!!

→ Ссылка
Автор решения: ChessLaw

большое спасибо за правильную идею. Если бы не 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();

Тест пройден

→ Ссылка