Слова в обратном порядке

  • 4
  • Недоступна
Если половина или больше ваших действий вам кажутся лишёнными смысла, не переживайте: скорее всего, вы чётко осознаете бренность бытия, а, значит, можете стать классным программистом. И еще: иногда — просто кажется. Здесь есть смысл: введите 5 слов, поместите их в список. Удалите третий элемент списка, и выводите оставшиеся элементы в обратном порядке.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (71)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Dennis8 уровень, Москва
13 января, 17:49
Час плясок с бубном и заработана очень хорошая привычка... ...дело шло хорошо, код написался быстро, даже без коллекции обратный вывод сделал...но при выводе результатов программа вылетает с ошибкой. Методом научного тыка было выяснено, если убираешь remove всё выводится без ошибки, как только добавляешь обратно, с ошибкой... Переделал даже с использованием коллекции сортировку. Так вот о привычке.... for (int i = 0; i < arr.size(); i++) вторым условием всегда пишите длину массива, когда выводите что-то на экран. Я написал через цифру <5, и как результат, после удаления (remove), элекментов в массиве стало меньше, и выдавалась ошибка.
neadekvat_6118 уровень, Одесса
6 января, 20:50
нужно удалить второй а не третий! list.remove(2); а не list.remove(3);
S3R3N1TY16 уровень, Санкт-Петербург
11 декабря 2018, 22:44
У кого не будет принимать через
while(true) {

            String s = reader.readLine();
                if(s.isEmpty()) break;

                list.add(s);
        }
Замените на обычный цикл
for(int i=0; i<5; i++)
          list.add(reader.readLine());
Первый вариант тоже верный, но их Компилятор выдает nullPointException и указывает на метод isEmpty
vk18 уровень, Санкт-Петербург
13 декабря 2018, 14:13
Естессно. Тебя же просили ввести пять чисел, а не вводить числа до ввода пустой строки.
NoDream9 уровень
24 августа 2018, 14:09
array.size() - i - 1
Veronika26 уровень, Москва
26 июля 2018, 16:56
В задаче требуется обратный вывод строк (привет \n мир ---> мир \n привет), а не слов (тевирп \n рим).
19 июля 2018, 06:37
list.forEach(System.out::println);
Любомир17 уровень, Киев
29 марта 2018, 16:25
Юзаем reverse, ребята. Не зря же нам импортом Collections подсобили) Collections.reverse(list);
Александр9 уровень
4 июня 2018, 21:00
спасибо друг за подсказку)))
Irik24 уровень
15 октября 2017, 21:17
public class Solution { public static void main(String[] args) throws Exception { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); ArrayList<String> list = new ArrayList<>(); for (int i = 0; i < 10; i++) list.add(reader.readLine()); int max = list.get(0).length(); for (int i = 1; i < list.size(); i++) { if(list.get(i).length() > max){ max = list.get(i).length(); } else { System.out.println(i);break; } } } }//как по принципу нахождения максимального значения.
Сергей11 уровень, Минск
31 января 2018, 14:09
Зачем так усложнять?))))
y-grek8 уровень, Киев
10 декабря 2018, 20:04
for (int i = list.size() - 1; i >= 0; i--) {
            System.out.println(list.get(i));
        }
Александр Криз8 уровень, Харьков
2 января, 23:03
я задачу то сделал но не пойму одно почему "int i = list.size() - 1" , я записывал просто 4 но выдавало ошибку
Александр Криз8 уровень, Харьков
2 января, 23:10
а все понял то мой косяк, надо было 3 писать
Ильяс35 уровень, Москва
9 октября 2017, 10:11
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
ArrayList<String> list=new ArrayList<>();
for(int i=0; i++ < 5; list.add(0,reader.readLine() ) ){
}
list.remove(2);
for(String s:list)
    System.out.println(s);
Немного похитрее способ.
RayFinkle-s-Pilles20 уровень
9 ноября 2017, 10:10
обратный порядок?
Ильяс35 уровень, Москва
9 ноября 2017, 10:54
Протестируй, удивишься)
RayFinkle-s-Pilles20 уровень
10 ноября 2017, 11:53
ахах, понял
Лера15 уровень, Москва
8 января 2018, 20:29
что значит i++<5?
Ильяс35 уровень, Москва
8 января 2018, 21:32
Это обычный инкремент Он бывает двух типов: пост-итерации и пре-итерации Пост-итерация это i++ Пре-итерация это ++i Разница их в том, что при сравнении i++ <5 сначала сравнивается с текущим значением i, а потом прибавляется единица. А при предварительной итерации ++i <5 сначала прибавляется единица, а потом уже сравнивается. Например:
int i =3;
if(i++==3)System.out.println("Равенство истинно, i="+i);
else System.out.println("Этот блок не сработает в данной ситуации, хоть и переменная i сейчас 4");
Вот еще пример:
int a=5;
System.out.println(a++); //выведет 5. Хоть и единица прибавлена, но после использования.
//Теперь a=6
System.out.println(++a); //А тут выведет 7. То есть сначала подсчёт, а потом использование этой переменной.
То же самое и с декрементом i-- и --i
Павел40 уровень
2 февраля 2018, 03:46
for(int i=0;i++<5;list.add(reader.readLine())); list.remove(2); for(String s:Collections.reverse(list))System.out.println(s);
Di30 уровень, Москва
5 февраля 2018, 01:10
Ильяс, а в вашем коде разве получается обратный порядок? Или я чего-то не понимаю.
Ильяс35 уровень, Москва
5 февраля 2018, 08:00
Для этого надо протестировать, тогда всё станет понятно.
Яна Симус10 уровень, Москва
5 февраля 2018, 19:33
тут каждый раз добавляется в начало, т.е. запись в обратном порядке
RellePro9 уровень
4 июня 2018, 08:47
насчет простоты для новичка я бы поспорил, а вот лаконичность и краткость - это да - красивое решение.
Александр9 уровень
4 июня 2018, 18:55
классный вариант написания задачи))) увидел для себя новый вариант выполнения for
Евгений10 уровень, Днепр
9 июля 2018, 22:24
Круто, огонь :) Правда очень не обычно и не очень читабельно ... но респект !!!
Ильяс35 уровень, Москва
8 октября 2018, 19:58
Пре-итерация чего? Инкременета? Там речь шла об инкременте, я его засунул в условие, чтобы оставить 3 параметр for свободным для другого действия. Я не говорю что так правильно делать. Я всего лишь показал, что так можно. Для общего развития так сказать.
Петр8 уровень, Москва
10 октября 2018, 14:17
Не перестаю удивляться! =)
Guardby8 уровень, Брест
23 октября 2018, 21:03
Мне кажется не совсем верно. Так как этот способ работает, только для центрального числа. А если будет в задаче удалить не третий элемент, а второй.
Ильяс35 уровень, Москва
23 октября 2018, 21:20
О чем речь? Элементы удаляются через list.remove(...); если что... Для второго элемента list.remove(1);
y-grek8 уровень, Киев
10 декабря 2018, 20:15
здесь валидатор "не досмотрел", ведь просят "выведи оставшиеся элементы в обратном порядке.".. элементы у тебя выводятся в обыкновенном порядке (по возрастанию..) ..а Гардбай, коментарием выше имел ввиду, что если бы попросили удалить не центральное слово, а второе.. валидатор бы ругался.. но это если бы просили удалить 2е и именно слово, а не элемент
Ильяс35 уровень, Москва
10 декабря 2018, 22:07
Ааа, ну тогда просто удалять тоже нужно было бы учитывая обратный порядок, то есть введённое второе слово было бы 4 (из 5 элементов) в списке — то есть 3 индексом из {0,1,2,3,4}
list.remove(3);
был бы ответ тогда
Billy Milligan14 уровень, Москва
15 сентября 2017, 07:04
public static int count = 5;

    public static void main(String[] args) throws Exception {

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        ArrayList<String> arrayList = new ArrayList<>();

        for (int i = 0; i < count; i++) {
            arrayList.add(reader.readLine());
        }

        arrayList.remove(2);

        for (int i = arrayList.size() - 1; i >= 0 ; i--) {
            System.out.println(arrayList.get(i));
        }


    }
Anonimus1506331 уровень
27 сентября 2017, 14:32
А зачем усложнять код переменной count?
Boris18 уровень
5 июля 2018, 13:50
когда создаётся переменная с модификатором статик то вы сразу же выделяите память для этой перемной .... зачем тратить лишнию память если оно у вас временая для цыкла? она должна уйти в мусорку сразу же после использование и память освобождается, а так у вас всегда будет выделена память .