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

  • 4
  • Недоступна
Если половина или больше ваших действий вам кажутся лишёнными смысла, не переживайте: скорее всего, вы чётко осознаете бренность бытия, а, значит, можете стать классным программистом. И еще: иногда — просто кажется. Здесь есть смысл: введите 5 слов, поместите их в список. Удалите третий элемент списка, и выводите оставшиеся элементы в обратном порядке.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (71)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Mike Woo18 уровень, Москва
9 марта, 16:35
Кого ещё задолбало копипастить из задачи в задачу код для считывания строк? ))
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Max Rabinovich12 уровень, Санкт-Петербург
четверг, 11:42
Я всегда пишу руками (с табом). Зато запомнил и делаю это всё за две секунды. Сначала думал, что не запомню это никогда. Так что всем советую забыть про копипаст, даже если что-то забыли, просто откройте прошлую задачу рядом и перепечатывайте.
Dennis15 уровень, Москва
13 января, 17:49
Час плясок с бубном и заработана очень хорошая привычка... ...дело шло хорошо, код написался быстро, даже без коллекции обратный вывод сделал...но при выводе результатов программа вылетает с ошибкой. Методом научного тыка было выяснено, если убираешь remove всё выводится без ошибки, как только добавляешь обратно, с ошибкой... Переделал даже с использованием коллекции сортировку. Так вот о привычке.... for (int i = 0; i < arr.size(); i++) вторым условием всегда пишите длину массива, когда выводите что-то на экран. Я написал через цифру <5, и как результат, после удаления (remove), элекментов в массиве стало меньше, и выдавалась ошибка.
Александр8 уровень
9 марта, 15:08
В Вашем примере, строки не будут выводится в обратном порядке, разве нет?
Александр7 уровень
13 марта, 18:39
Если в индексе списка будет стоять не "i", то можно и в обратном порядке.
neadekvat_6118 уровень, Одесса
6 января, 20:50
нужно удалить второй а не третий! list.remove(2); а не list.remove(3);
АртемGeek10 уровень, Москва
8 марта, 10:04
Все правильно в задаче. Удаляем 3 элемент под индексом 2.
Николай9 уровень
9 марта, 07:11
есть нулевой, первый, второй, третий и т.д. написано третий значит list.remove(3); Зачем путать??? Написали б тогда третий по порядку или с индексом 2. ((бред
Александр8 уровень
9 марта, 15:10
Удали 3 - ий ЭЛЕМЕНТ списка, 1) дедушка 2) бабушка 3) папа 4) мама 5) сын
S3R3N1TY29 уровень, Санкт-Петербург
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
vk20 уровень, Санкт-Петербург
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-grek11 уровень, Киев
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 писать
Natalya Guskova16 уровень, Москва
13 февраля, 14:27
почему пишется -1 , ведь есть i--; кто объяснит?
y-grek11 уровень, Киев
13 февраля, 21:59
лист.сайз() - это размер листа (количество элементов в листе).. в примере идет перебор с конца списка, для этого нужно присвоить переменной "i" номер последнего элемента.. поскольку нумерация в массивах и списках начинается с нуля, в списке, размер которого - 10, последний элемент будет под номером 9 (так как отсчет идет с нуля).. поэтому лист.сайз() - 1 = 10 - 1 = 9.. i-- уменьшает переменную на 1 каждый проход.. чтобы перебор выглядел следующим образом - 9, 8, 7, 6, 5... и так до нулевого элемента
Ильяс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
ахах, понял
Лера17 уровень, Москва
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);
Di31 уровень, Москва
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-grek11 уровень, Киев
10 декабря 2018, 20:15
здесь валидатор "не досмотрел", ведь просят "выведи оставшиеся элементы в обратном порядке.".. элементы у тебя выводятся в обыкновенном порядке (по возрастанию..) ..а Гардбай, коментарием выше имел ввиду, что если бы попросили удалить не центральное слово, а второе.. валидатор бы ругался.. но это если бы просили удалить 2е и именно слово, а не элемент
Ильяс35 уровень, Москва
10 декабря 2018, 22:07
Ааа, ну тогда просто удалять тоже нужно было бы учитывая обратный порядок, то есть введённое второе слово было бы 4 (из 5 элементов) в списке — то есть 3 индексом из {0,1,2,3,4}
list.remove(3);
был бы ответ тогда