Это конец

  • 4
  • Недоступна
Давайте создавать список строк, вводя их с клавиатуры, пока не надоест. Надоесть может в любой момент, и на этот случай нужно придумать специальное слово. Пускай этим словом будет «end», то есть «конец». А зачем нам эти строки, спросите вы. А мы ответим: затем, чтобы добавлять их в список, а затем выводить на экран.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (73)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Илья8 уровень
пятница, 13:03
С помощью инфы отсюда и своей смекалкой получил это:
for (;true;)
{String s = reader.readLine();
if (s.equals("end"))
break;
list.add(s);
P.S. Как-то неловко, что задачи вроде легкие, а до идеи не всегда удается быстро догонять, сюда лезу зачастую быстро. А на других задачах все говорят, что сложно, но при этом там как раз сам решаю за минут 5 -_-
Иван22 уровень
26 октября, 16:21
Тут многие пишут второй цикл для вывода на экран строк из листа. Я запилил проще - сначала залил строку в список и следом выводил эту же строку на экран. Самом собой это было в теле логического оператора if в ктором строка проверялась на несоответствие слову "енд"
Костя Демчук8 уровень
30 октября, 19:30
получается после каждой введенной строки "!end" она сразу выводиласьна экран?
VitalyK #111612414 уровень
6 августа, 10:05
кому нужен бесконечный цикл -> for (int i=0; ; i++) { list.add(reader.readLine()); if (list.get(i).equals("end")) { list.remove(i); break;}
Александр Толкачёв22 уровень, Санкт-Петербург
20 августа, 17:31
бесконечный цикл for делается проще
for(;;) {}
Alexander9 уровень, Владивосток
2 октября, 15:44
В чем смысл добавлять, а потом удалять, если можно (и нужно) сразу не добавлять "end"?
Riccio12 уровень, Москва
13 октября, 13:08
Тогда уж
while (true) {
...
}
А циклом for оформить вывод.
Иван Зубов27 уровень, Москва
25 июля, 16:24
непонятно где использовать for: при формировании цикла ввода строк списка или при выводе списка
MP13 уровень
15 июля, 13:19
Тормозил очень долго, в течение часа. Решил следующим образом: 1) Заполнил список через while (true); 2) Внутри while завел строковую переменную для хранения считанной из буфера строки; 3) Проверил строку на неравенство значению "end", иначе - выход через break; 4) Вывод итогового списка через foreach.
Дмитрий16 уровень
25 июля, 16:37
Все то же самое сделал, но цикл не прерывается при введении end
MP13 уровень
26 июля, 15:35
При заполнении списка значениями после введения end нужно еще ввести пустую строку, нажав Enter
Alexander Sedov25 уровень, Москва
4 июля, 11:31
название задачи стрёмное
Яха Дубатовка9 уровень, Москва
23 июля, 16:47
А мне наоборот напомнило старые добрые Doors
AlexeyVL8 уровень
19 октября, 22:06
Тоже показалось
LisaAlisa29 уровень, Киев
10 мая, 21:22
Рабочее условие перед добавлением в список for (String s = reader.readLine();s.equals("end") != true;) После отдельно сделала вывод списка тоже через for
Riccio12 уровень, Москва
13 октября, 13:17
У меня ваше условие заканчивается ошибкой "Java heap space". А само выражение лучше записать как !s.equals("end")
Юрий18 уровень, Санкт-Петербург
2 февраля, 16:22
Ребят, кто-нибудь знает как через for заполнить list если не известно окончательное количество элементов (al.size() не проходит)? В частности в этой задаче пришлось тупо поставить 20.
public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<String> al = new ArrayList<>();
        //напишите тут ваш код
        for (int i = 0; i < 20; i++) {
            String s = reader.readLine();
            al.add(s);
            if (s.equals("end")){
                al.remove(i);
                break;
            }
        }
        for (int j = 0; j < al.size(); j++) {
            System.out.println(al.get(j));
        }
    }
}
Ainur24 уровень
2 февраля, 20:33
Пиши бесконечный цикл
for (;;) {
}
Ainur24 уровень
2 февраля, 20:40
Во втором for переменную индекса можно оставить как i, дубликатом это не будет. А вообще лучше так:
for (String s : a1) {
System.out.println(s);
}
именуются циклом for each.
DMT17 уровень, Самара
2 февраля, 22:04
7 уровень, 8 лекция, пример 1. Даже если это уже не совсем актуально, то пусть хоть другим ученикам позабывшим поможет.
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in) );
    ArrayList<Integer> list = new ArrayList<Integer>() ;

    while (true)
    {
        String s = reader.readLine();
        if (s.isEmpty()) break;
        list.add(Integer.parseInt(s));
    }
Любомир16 уровень, Киев
30 марта, 09:47
да, супер, только конкретно в этой задаче нужно использовать for сам решил при помощи while(), валидатор наругал :q
Peach10 уровень
3 апреля, 19:07
решил через while, все ок.
Sergey Kovalchuk14 уровень, Киев
18 апреля, 06:38
Поставь al.add(i, s);
Lulia Vert10 уровень
23 декабря 2017, 11:35
кажется я не понимаю как работает цикл while :( объясните пожалуйста, почему этот код не рабочий. спасибо
public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<String> strings = new ArrayList<>();

        while (!reader.readLine().equals("end")) {
            strings.add(reader.readLine());
        }

        for (String s : strings) System.out.println(s);

    }
}
ramone18 уровень, Минск
25 января, 10:07
нет. не лаконичнее. Плюс нелогично выглядит ситуация, когда ты сначала добавляешь в список то, чего там быть не должно, а потом удаляешь. Разумнее изначально ненужную строку не добавлять. Так мне думается.
Boris18 уровень
6 июля, 15:01
я тоже так сделал и уходило в еррор типа бесконечный цыкл, проблема в том что он будет читать только первую (reader ) из буфера и будет крутить её по кругу, а нужно при каждом внесение в буфере инизиализировать заного 1 перемную типа String s = reader.readLine(); и всунуть её в цамом цикле то тогда буфер очищяется и ставится новый , я только так мог понять ошибку.
Юлия12 уровень, Москва
22 декабря 2017, 23:31
Я думала, оба цикла должны быть for, и ,кажется, немного перемудрила :D но код рабочий. валидатору понравился.
public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        //напишите тут ваш код
        ArrayList<String> ar = new ArrayList<>(10000);
        Boolean flag=false;
        String qw = reader.readLine();
            for (int i = 0; flag==false; i++)
            {   ar.add(qw);
                qw = reader.readLine();
                if (qw.equals("end"))
                    {  flag=true;
                       break;   }
             }
       for(String q:ar)
        {  System.out.println(q);    }
    }
}
Максим Фёдоров20 уровень, Минск
15 января, 13:01
Валидатор пропускает, но для себя условие задачи не выполняйте. У вас задан размер листа, а нужно, чтобы ввод осуществлялся хоть бесконечно, но пока не введут "end"
Юлия12 уровень, Москва
15 февраля, 16:42
Максим, ArrayList - это динамический массив) Мой код как раз таки позволяет вводить строки бесконечно, за счёт флага. А в случае бОльшего количества элементов, массив автоматически изменит свою размерность, поэтому её можно было вообще не указывать.
Денис23 уровень, Казань
20 февраля, 17:39
а если первая строка сразу будет "end",то условие задачи не выполнится. например при вводе end aaa end выведет end aaa
Юлия12 уровень, Москва
27 февраля, 12:01
Да, Вы правы, нужно добавить проверку на ввод первой строки.