Только по-очереди!

  • 9
  • Недоступна
1. В классе Solution создать public static класс нити Read3Strings унаследовавшись от Thread. 2. В методе run реализовать чтение с консоли трех строк. 3. Три подряд введенных строки должны считываться в одной нити и объединяться в одну строку через пробел. 4. В методе main вывести результат для кажд
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (50)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Denis22 уровень
27 марта, 17:43
сделал с помощью
synchronized (reader)
Александр20 уровень, Казань
26 февраля, 09:36
не понимал откуда у нас 2 пустых строки вылазит - забыл притормозить потоки и успел отрабатывать printResult;
S3R3N1TY33 уровень, Санкт-Петербург
27 января, 20:53
Через StringBuilder не дал вывести строку итоговую состоящую из несколько строк и пробелов, ему нужно чтобы именно в методе printResult был вывод нескольких строк.
Иван25 уровень
2 ноября 2018, 12:55
у меня вообще прошла без reader.ready(); просто ввод строк
IceBerg31 уровень, Днепр
28 декабря 2018, 19:51
А зачем, если в нас потоки не работают одновременно?
ezhilo8526 уровень
18 октября 2018, 23:13
У кого выводит null при использовании простой строки в качестве результата - попробуйте инициализировать строку "".
Gusarov Alexey17 уровень, Sakhalin
10 апреля, 11:44
Здравствуйте! Подскажите: а почему так?
Максим19 уровень
7 сентября 2018, 16:28
Други, не выдумывайте ничего. Используйте join() в правильных местах и ничего больше. Очень просто. Но можно и с вензилями ;)
Ярослав35 уровень
8 июня 2018, 14:38
Через StringBuffer сделал :)
Лапин Валерий35 уровень
19 февраля 2018, 16:58
public static class Read3Strings extends Thread{
        ArrayList<String> result = new ArrayList<>();
        private int count = 0;

        @Override
        public void run() {
            try {
                while (count < 3) {
                    if (reader.ready()) {
                        result.add(reader.readLine());
                        count++;
                    }
                }
            } catch (IOException e) {
            }
        }

        public void printResult(){
            for(String str : result) {
                System.out.print(str + " ");
            }
            System.out.print("\n");
        }
    }
Alexey Salykin19 уровень, Москва
19 сентября 2018, 23:29
вместо if (reader.ready()) { уместнее будет пустой while(!reader.ready()){} иначе если reader почему-то оказался не готов - рискуем получить пустой список
IceBerg31 уровень, Днепр
28 декабря 2018, 19:42
while (count < 3) Всё равно будет гонять проверку по кругу, пока count не будет равен 3, а он увеличивается только в том случае, если ридер готов и принял строку. Да и смысл использовать while(!reader.ready() {} , это же нужно его пихать в ещё один цикл, на три итерации.
Аслан31 уровень, Москва
12 декабря 2017, 20:30
/* Комментарий удален */
20 января 2018, 21:35
валидатор это принимает красивое решение
kmm121 уровень, Минск
12 февраля 2018, 14:26
классно
Evgeny K17 уровень
25 сентября 2018, 12:42
"/* Комментарий удален */" Тоже хочу посмотреть :((
14 декабря 2018, 07:16
Наверное поменяли задачу, поэтому и по удаляли коментарии с решениями.
Ильяс35 уровень, Москва
25 ноября 2017, 14:48
/* Комментарий удален */
Иван23 уровень, Москва
21 января 2018, 16:39
Я не понимаю, почему при вызове метода printResult у объекта класса Read3Strings выводится содержимое метода run. Ведь не объявлено ни одного конструктора, который бы инициализировал объект. Я не понимаю в какой момент содержимое метода run попадает в объект класса Read3Strings?
Beslan Bavizhev39 уровень
29 января 2018, 00:46
Что значит "почему при вызове метода printResult у объекта класса Read3Strings выводится содержимое метода run"? В printResult() вывели результирующую строку, а не "содержимое метода" run(). Объекты инициализируются в данном случае конструктором по умолчанию. В run() проваливаемся когда вызываем start() у объекта.
kmm121 уровень, Минск
12 февраля 2018, 14:29
точно... а я на циклах..