Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2022, 16:38   #1
delayy
Пользователь
 
Регистрация: 04.11.2021
Сообщений: 10
По умолчанию Обработка строк JAVA

Здраствуйте, помогите пожалуйста. Нужно расставить пробелы в этой строке (1-(34+3*(2-623 )*8))/21), так чтоб пробелы стояли ТОЛЬКО до и после знака не являющегося числом, по итогу строка должна иметь такой вид: ( 1 - ( 34 + 3 * ( 2 - 623 ) * 8 ) ) / 21 ), до и после знака должен стоять только один пробел.
Я написал код, но есть две проблемы, цикл не идет до конца так как длина строки sb увеличивается а длина входящей строки нет, и данный метод расставляет пробелы в числах в которых больше одного разряда.

Код:
public  static String spacing(String x) {
        var i = 0;
        StringBuffer sb = new StringBuffer(x);
        while (i <= x.length()) {
            if (x.substring(i,i++) != "[0-9]") {
                sb.insert(i, " ");

            }
            i++;
        }
        return sb.toString();
    }

Последний раз редактировалось BDA; 22.10.2022 в 18:16.
delayy вне форума Ответить с цитированием
Старый 22.10.2022, 18:54   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
    public  static String spacing(String x) {
        StringBuffer sb = new StringBuffer(x);
        boolean number_before = false;
        for (int i = 0, bi = 0; i < x.length(); i++)
        {
            char c = x.charAt(i);
            if (c == ' ') {
                sb.deleteCharAt(bi);
            } else if ('0' <= c && c <= '9') {
                if (!number_before) {
                    number_before = true;
                    sb.insert(bi, ' ');
                    bi++;
                }
                bi++;
            } else {
                number_before = false;
                sb.insert(bi, ' ');
                bi += 2;
           }
        }
        if (x.length() > 0)
            sb.deleteCharAt(0);
        return sb.toString();
    }
Может быть можно и проще.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка строк JAVA delayy Помощь студентам 1 14.10.2022 08:33
Обработка строк JAVA delayy Помощь студентам 1 13.10.2022 08:24
Три задачи на Delphi (Паскаль): обработка строк, обработка множеств, работа с типизированным файлом Тедеев Помощь студентам 11 13.12.2013 13:38
Обработка строк malenkaya Помощь студентам 2 20.05.2011 14:57
чтение файла в массив строк java (Перенесено из Java SE) Sasha9132 Помощь студентам 0 18.11.2010 22:57