Это конец

  • 5
  • Недоступна
Давайте создавать список строк, вводя их с клавиатуры, пока не надоест. Надоесть может в любой момент, и на этот случай нужно придумать специальное слово. Пускай этим словом будет «end», то есть «конец». А зачем нам эти строки, спросите вы. А мы ответим: затем, чтобы добавлять их в список, а затем выводить на экран.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (243)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Евгений
Уровень 11, Москва
21 апреля, 17:58
Не понимаю, объясните кто может, пожалуйста. Почему
for (int i = 0; isEnd; i++) {
            String s = reader.readLine();
            if (s.equals("end")) {
                list.remove(list.size() - 1);
                isEnd = false;
            }
            list.add(s);
}
Не работает. А если list.add(s); поставить выше if то все работает нормально?
528
Уровень 15
22 апреля, 19:49
выполнение твоего цикла идёт по порядку, предположим, что твой цикл делает уже 10ый обход
for (int i = 0; isEnd; i++) {
            String s = reader.readLine(); // строке s присвоил значение "end"
            if (s.equals("end")) { // проверяешь, не является ли введенное строка ...
                            // т.к. это 10ый круг, тебе попадается "end" и ты заходишь в условие
                            // начинаешь выполнять всё что заключено в if () { }
                list.remove(list.size() - 1); // удаляешь 10-1 элемент, им оказывается строка
                                            // "программа"
                isEnd = false; // присваиваешь своему условию выхода false
            }
            list.add(s); // помещаешь на место строки "программа", строку "end"
}
for (int i = 0; isEnd; i++) {
            String s = reader.readLine(); // строке s присвоил значение "end"
            list.add(s); // помещаешь в последнюю строку "end
            if (s.equals("end")) { // входишь в if () { }
                list.remove(list.size() - 1); // удаляешь "end"
                isEnd = false; // говоришь циклу, что надо перестать выполняться
            }
        }
Евгений
Уровень 11, Москва
23 апреля, 06:58
Спасибо! доступно объяснил.
Абдурахман
Уровень 12
5 марта, 10:31
СРАВНЕНИЕ СТРОК НЕ ЧЕРЕЗ == а черз метод
equals()
как я понял "==" сравнивает то ли адреса то ли другие вещи но не строку
Евгений N
Уровень 13
6 апреля, 14:59
да, я тоже полчаса думал, искал пробелы и т.п. потом ВСПОМНИЛ 😀 хорошая задачка!
Rinat
Уровень 16, Уфа, Россия
20 октября 2021, 06:45
подскажите почему не работает : ArrayList<String>list=new ArrayList<String>(); String textEnd = reader.readLine(); while (textEnd!="end"){ list.add(textEnd); } типа уходит в бесконечный цикл.
Lena Leontyeva Инженер-программист в Маленькая провинциал
22 октября 2021, 14:49
ты textEnd присвоил до начала работы цикла, самому первому значению. он у тебя никогда не возьмет следующее.
ВашБосс
Уровень 15, Сочи, Россия
12 мая 2021, 03:49
Решил через contains)
Дима Скрипник
Уровень 9, Ашдод, Израиль
10 мая 2021, 12:33
Решил одним циклом for. Убрал условие прекращения работы цикла, а дальше всё довольно просто
Anthon Petrow QA Manual Engineer в inDriver
3 мая 2021, 13:22
Реализовал таким образом
Leonid Ksenofontov
Уровень 10, Москва
12 мая 2021, 11:16
можно было без while, просто бесконечный цикл фор (;;), а брейк после эколза кинуть, лично мне очень нравится выводить цикл через форич: имяЦикла.forEach(System.out::println) компактней получается, попробуй, мб и тебе зайдет )
Anton
Уровень 16, Москва
23 апреля 2021, 05:36
Подскажите в чем разница? 1 вариант не работает
while(true){
            if(reader.readLine().equals("end")){
                break;
            }
            else
            list.add(reader.readLine());
}
2
while(true){
          String s = reader.readLine();
          if(s.equals("end")){
              break;
          }
          else
          list.add(s);
      }
Евгений
Уровень 23, Омск, Россия
8 мая 2021, 09:31
тоже помучился, вроде бы reader.readLine() возвращает строку (если не ошибаюсь) и мне пришлось использовать приведение типов String str1=""+reader.readLine() моё решение выше
Alexander Anopov
Уровень 20, Москва
29 октября 2021, 15:43
каждый readLine читает новую строку, соответственно если в первом условии false, то на втором условии читает следующую строку. Лучше после цикла while сделать так s= reader.readLine(); и использовать уже переменную "s"
Ердаулет
Уровень 11
6 апреля 2021, 12:03
что не так с idea? у меня есть нерешенные задачи, и при проверке вместо того, чтобы проверить актуальную задачу, она почему то проверяет ранее нерешенные задачи Помогите настроить idea
Зепп Бранниган Admin в JavaRush Moderator
7 апреля 2021, 11:41
Есть несколько способов как заставить Intellij IDEA компилировать только выбранную задачу. 1.Нажать CTRL+SHIFT+F10, когда курсор активен в окне с кодом новой задачи.  2. Возле метода main новой задачи, слева, где номера строк, нажимаем зеленый треугольник и выбираем верхний пункт, который называется по типу ИмяКласса.main, например ("Run Solution.main CTRL+SHIFT+F10")   3. Слева от имени класса, который мы хотим запустить, возле номера строки также есть зеленый треугольничек. Нажать на него и выбрать верхний пункт, который называется по типу ИмяКласса.main, например ("Run Solution.main CTRL+SHIFT+F10").   4. В окне с кодом новой задачи кликаем правой кнопкой мыши. Выбираем пункт меню вида: "Run ИмяКласса.main", например - "Run Solution.main CTRL+SHIFT+F10"). 
Eduard
Уровень 8
8 апреля 2021, 16:28
в закладки )
Ivan Tregubov
Уровень 8, Россия
17 мая 2021, 05:17
ещё проще во вкладке project удалять решённые и не используемые задачи (пример названия папки task0722) и будет вам счастье)))
Rodion
Уровень 20, Munich, Germany
8 февраля 2021, 20:52
Первый пример из этой лекции - фактическое решение этой задачи, только мы не с integer работает: https://javarush.ru/quests/lectures/questsyntax.level07.lecture08
Vano540
Уровень 24, Санкт-Петербург
30 января 2021, 20:45
Спасибо коментам, если бы не они, так и не допер в чем ошибка. Делал через два for и выдавало постоянно ошибку, исправил один на while и все получилось)