Меняем функциональность

  • 5
  • Недоступна
В архиве пылится старенькая решённая задача. В ней нужно вводить строки, а затем, после введения пустой строки, все буквы в строках конвертировались в верхний регистр. Модернизируйте задачу: программа должна построить новый список. Если в строке чётное число букв, строка удваивается, если нечётное – утраивается. Ввод строк оставляем без изменений.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (75)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Антон19 уровень, Санкт-Петербург
12 июля, 12:08
Задача: Программа вводит строки, пока пользователь не введёт пустую строку (нажав enter). Потом она конвертирует строки в верхний регистр (Мама превращается в МАМА) и выводит их на экран. Почему в примере вывода строки не в верхнем регистре? на до ли делать верхний регистр?
valijon li23 уровень, Москва
23 июля, 15:38
Нет, вот это функционалностю надо изменить на удвоивать и т.п.
RomanBk16 уровень
24 апреля, 17:41
В валидации, не сказано, что нужно записывать значения в новые списки. Можно из листа вывести без копирования, через цикл из ифами. if(s.length()%2==0){ System.out.println(list.get(i)+" " + list.get(i));}
Derp 12 уровень, Санкт-Петербург
4 июня, 11:16
прикольно, а я список переделывал лист сэтами))
Павел25 уровень, Минск
2 июля, 14:04
Новая задача: Программа вводит строки, пока пользователь не введёт пустую строку (нажав enter). Потом программа строит новый список. Если в строке чётное число букв, строка удваивается, если нечётное - утраивается. Программа выводит содержимое нового списка на экран. Требование выделил жирным
Дракоша18 уровень, Москва
1 апреля, 15:37
задача супер: запускаешь ее в начале и она сразу же не работает. Вроде как должна была бы отрабатывать, раз тут есть уже функционал.
Николай Васильев11 уровень, Apatity
24 июня, 11:30
у меня заработала сразу.
Дракоша18 уровень, Москва
2 августа, 13:25
фиг знает, с JR уже ничему не веришь - вот она подготовка к настоящей жизни разраба
Demid13 уровень
15 марта, 01:54
listMult.add(s.length()%2 == 0 ? (s+" "+s) : (s+" "+s+" "+s))
Роман Юрьевич12 уровень, Санкт-Петербург
25 марта, 18:43
я настолько утомился за весь день, что решал эту задачу 2 часа... пора сделать перерыв)
Khanif13 уровень, Алматы
31 марта, 02:51
Гениально!
Айдар14 уровень, Казань
10 июня, 20:51
супер коротко!
Николай Васильев11 уровень, Apatity
24 июня, 11:29
хотел было уже делать список из массивов))))))))))) Вот бы у меня голова лопнула бы))))))))
Евгений Майдуров10 уровень, Новосибирск
14 марта, 13:45
Сделал так: в цикле, с количеством итераций list.size() пишем условие, если list.get(i).length() % 2 == 0, то добавляем в новый список list.get(i) + " " + list.get(i), иначе добавляем в новый список list.get(i) + " " + list.get(i) + " " + list.get(i), после условия выводим на экран listMult.get(i). Валидацию прошел. Т.е. в итоге в новом списке ровно столько же строк, сколько и в предыдущем)
АртемGeek25 уровень, Москва
9 марта, 12:41
Вы решили эту задачу с 11 попытки, лучше чем 1% учеников. Какой же я крутой)
Денис10 уровень, Одесса
26 апреля, 20:02
"лучше чем 1% учеников" -- значит 99% решили лучше ))) p.s. Сам далеко не сразу решил
Dr Evil18 уровень, Киев
24 января, 12:11
Решил используя силу Java 8 и заодно узнал об очень интересном методе-умножителе nCopies() класса Collections.
ArrayList<String> listMultiplier = new ArrayList<>();

        for (String s : list) {
            if (s.length() % 2 == 0) {
                listMultiplier.add(String.join(" ", Collections.nCopies(2, s)));
            } else {
                listMultiplier.add(String.join(" ", Collections.nCopies(3, s)));
            }
        }

listMultiplier.forEach(System.out::println);
Санек Гыы13 уровень, Минск
30 января, 09:11
Где вы находите такую информацию? И как вообще доходите до такого решения? Это к тому, что как новичок, у меня решения идут более примитивным образом, а у вас прям все очень красиво
Dr Evil18 уровень, Киев
30 января, 10:28
В основном на английской версии Stackoverflow. Там очень много всего полезного. Решения не всегда подходящие, но с ними можно работать и поузновать по больше о том или ином элементе. Остальное в англоязычном сегменте Google. Так вот и учишься по тихоньку. Я и сам новичок, но мне интересны разные варианты решений, по этому и стараюсь как можно больше узнать, особенно о нововведениях Java 8-11. И я не прочь поморочиться над задачей дольше, но прийти к интересному решению. Заодно и новые фишки учишь, которые не обсуждаются на курсе. Жаль тут валидатор расчитан только на максимум Java 8.
ilgar13 уровень, Secaucus
12 февраля, 05:28
a kak povtorno reshat s novim variantom ?
ArrayList<String> listUpperCase = new ArrayList<String>();
    for (int i = 0; i < list.size(); i++) {
        String s = list.get(i);
        if(s.length()%2==0){
            listUpperCase.add(s+" "+s);
        }else listUpperCase.add(s+" "+s+" "+s);

    }
ya pomenyal tolko tut i rabotaet , a potom govorit eta zadacha uje reshena.
Dr Evil18 уровень, Киев
12 февраля, 09:22
Вы хотите поменять решение и проверить его на валидацию, я так понял? Если у Вас не Premium Pro подписка, то заново решать задачи нельзя.
Никита Куликов8 уровень, Владивосток
26 июля, 03:01
А еще есть библиотека http://commons.apache.org/proper/commons-lang/ и метод StringUtils.repeat(3, "abc") Вообще современное программирование это больше поиск уже готового инструмента и его адаптация к своим требованиям
Sergey Bezverkhniy16 уровень
19 января, 19:17
Так, чтобы не ошибиться. Все прошло и коротко. Не надо прописывать еще раз условия вывода. ArrayList<String> L1 = new ArrayList<>(); for (int i=0; i<L.size(); i++){ String g = L.get(i); if (g.length() % 2==0){ L1.add(g); System.out.print(g+" "); L1.add(g); System.out.println(g);} else { L1.add(g); System.out.print(g+" "); L1.add(g); System.out.print(g+" "); L1.add(g); System.out.println(g);
Lena 18 уровень
28 декабря 2018, 17:48
Не забывайте про пробелы!
Veronika31 уровень, Москва
26 сентября 2018, 13:12
Две полезности: 1) у кого выскочит NullPoinerException, пропишите в условии: s == null || s.isEmpty(); - помогает. 2) кто делает через StringBuider (метод append()), не забудьте использовать toString(). Ссыль: https://habr.com/post/132241/
Rif17 уровень
5 декабря 2018, 16:16
Спасибо. Сразу была засчитана задача.
Леонид39 уровень, Москва
12 декабря 2018, 12:13
Вы не могли бы объяснить первый пункт про s == null || s.isEmpty()? А точнее почему в лекциях везде s.isEmpty(),а если решать на сайте, такой способ через раз выдает ошибку
Veronika31 уровень, Москва
12 декабря 2018, 14:22
попробую дать объяснение, а опытные коллеги меня поправят, если что. 1) s == null; означает пустоту, то есть нет объекта. В случае с задачей, это означает когда входной поток исчерпан метод readLine() даст null. Поэтому данное выражение обязано быть в условии if. 2) s.isEmpty(); означает, что объект есть, но у него пустое значение (""). Если мы запишем данное выражение в if и наткнемся на пустоту (п.1), то вылезет ошибка NPE.
Veronika31 уровень, Москва
12 декабря 2018, 14:23
на qa.ru привели пример из жизни: