Омовение Рамы

  • 10
  • Недоступна
Когда-то жил и правил легендарный древнеиндийский царь Рама. И, вероятно, была та, которая его родила. Не факт, что она мыла его самостоятельно (царица всё-таки), но да простят нам знатоки эту невинную историческую фантазию. Напишем программу, которая заменит текст «мама мыла раму» на «Мама Мыла Раму».
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (497)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Paul9 уровень
вчера, 07:47
валидатор пропустил, когда я перестал возводить пробелы в Апперкейс :\
Petr15 уровень, Москва
Tuesday, 14:45
Отличная задача на проверку знаний и получение новых. Если бы в требования задачи добавили: 1) вдруг строка начнется с пробела - учти при решении; 2) может быть несколько пробелов между словами. то не было бы ей цены
Evgeny Siganov9 уровень, Москва
29 May, 13:13
на стороннем ресурсе нашёл прекрасное решение через substring. Создаём переменную String, присваиваем ей пустое значение "". Потом этой же переменной присваиваем её же значение "" + string.substring(0, 1).toApperCase(). Получается, что первый символ будет иметь верхний регистр, хоть даже это и пробел. Далее цикл фор с i = 1; i < string.length() с оператором if,else в условиях которого идёт сравнение пробела " " с string.substring(i - 1, i). Если да то к переменной что мы объявили в начале программы мы прибавляем символ в верхнем регистре. Если нет, то прибавляем символ как он идёт изначально. Выводим на экран переменную.
Tamerlan Amaev15 уровень, Подмиланье
29 May, 12:51
import com.sun.xml.internal.ws.util.StringUtils; StringUtils.capitalize(strTmp); Валидатор не пропускает. С чистой совестью скопировал другое решение из коментов.
Maxim Belich14 уровень, Минск
29 May, 12:41
Программа занимает всего 6 строчек. Думаю, если бы не был таким тупым можно было бы сделать и проще..
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String string = reader.readLine();
        Scanner scanner = new Scanner(string);
        while(scanner.hasNextLine()){
            string = scanner.next();
            System.out.print(string.toUpperCase().charAt(0)+string.substring(1) + " ");
        }
Даниил Герус10 уровень, Самара
25 May, 08:20
Валидатор не пропускает задачу по третьему пункту, если выводить так :
strs.forEach(it -> System.out.println(it));
Mihail Klimenko9 уровень, Краснодар
24 May, 07:44
Была война с валидатором на предмет обнаружения лишних пробелов :) Узнал и использовал методы trim(), split(), substring(), toUpperCase()
Artyom Petrov13 уровень, Москва
16 May, 06:36
В задаче условие: получить вывод, поэтому городить строку с заглавными первыми буквами и именно ее отправлять на вывод нет cмысла. Решил через разбивку строки на массив строк через string.split(" ");, Далее пробежался по элементам массива циклом ForEach. Поднял регистр первого символа в новой строчной переменной Character.toUpperCase(word.charAt(0)) и добавил оставшееся от строки word.substring(1).toLowerCase(). Отправил на принтер System.out.print() (не "println") с символом пробела позади. Тут валидатор ругнулся на возможность двойных пробелов. Дебагер показал, что метод string.split(" ") реагирует на двойные пробелы добавляя в массив пустой элемент. Проблема решилась с помощью проверки наполненности строки !(word.isEmpty()) в условие цикла.
Ivan10 уровень
Tuesday, 11:24
В одном ForEach, получилось всё сделать. Сразу при разбивке регистр менять при условии, что строка не пустая А удивлён был, что валидатор схавал println(words + " ") в этом же цикле
Shamil12 уровень, Киев
14 May, 13:06
Решил через StringBuilder
Alexander Chevtaev18 уровень, Bogorodsk
11 May, 07:42
1. Разбил на символы строку и занес в обычный массив (.toCharArray()) 2. Перенес символы из обычного массива в ArrayList 3. В цикле ищу пробелы и меняю следующий за пробелом символ на верхний регистр (.toUpperCase()) 4. Вывожу через foreach все символы из ArrayList (System.out.print)
Dan9 уровень
24 May, 22:14
а я решил оставив массив чар и не понял, почему эта задача затесалась в коллекциях) зато понял, что не знаю методов для работы с символами и строками
A A13 уровень, Москва
26 May, 11:26
Не обязательно было засовывать в ArrayList Character.toUpper и так работает с массивом char Решал как ты)
Mir k9 уровень
29 May, 05:24
Только вот как сравнить с пробелом то? if(str[i] == " ") так нельзя что ль? .equals() тоже красным
Mir k9 уровень
29 May, 05:35
Как использовать апперкейс с аррей лист??
A A13 уровень, Москва
29 May, 06:20
if(str[i] == ' ') Одинарные скобки, т.к. это char
Mir k9 уровень
29 May, 06:26
Спасибо, просто офигительно я ошибаюсь или об этом НИ РАЗУ не было рассказано на платном курсе жр до этого?!?
Alexander Chevtaev18 уровень, Bogorodsk
29 May, 06:26
array.set(0, array.get(0).toUpperCase());
Mir k9 уровень
29 May, 06:30
Почему у меня красным list.set(0, list.get(0).toUpperCase());
Alexander Chevtaev18 уровень, Bogorodsk
29 May, 06:34
я не знаю, нужно код твой смотреть
Mir k9 уровень
29 May, 06:36
char[] str = string.toCharArray(); List <String> list = new ArrayList<>(); list = Arrays.asList(str.toString()); list.set(0, list.get(0).toUpperCase()); если так то код работает но ничего не меняет. char[] str = string.toCharArray(); List list = new ArrayList<>(Arrays.asList(str)); list.set(0, list.get(0).toUpperCase()); а так апперкейс красным, типо для объекта нельзя.
A A13 уровень, Москва
29 May, 10:43
Так <String> ты не указал