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

  • 9
  • Недоступна
1. В классе Solution создать public static класс нити Read3Strings унаследовавшись от Thread. 2. В методе run реализовать чтение с консоли трех строк. 3. Три подряд введенных строки должны считываться в одной нити и объединяться в одну строку через пробел. 4. В методе main вывести результат для кажд
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (43)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Иван19 уровень
2 ноября, 12:55
у меня вообще прошла без reader.ready(); просто ввод строк
ezhilo8518 уровень
18 октября, 23:13
У кого выводит null при использовании простой строки в качестве результата - попробуйте инициализировать строку "".
Максим18 уровень
7 сентября, 16:28
Други, не выдумывайте ничего. Используйте join() в правильных местах и ничего больше. Очень просто. Но можно и с вензилями ;)
Ярослав35 уровень
8 июня, 14:38
Через StringBuffer сделал :)
Лапин Валерий35 уровень
19 февраля, 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 Salykin18 уровень, Москва
19 сентября, 23:29
вместо if (reader.ready()) { уместнее будет пустой while(!reader.ready()){} иначе если reader почему-то оказался не готов - рискуем получить пустой список
Аслан30 уровень, Москва
12 декабря 2017, 20:30
/* Комментарий удален */
20 января, 21:35
валидатор это принимает красивое решение
kmm121 уровень, Минск
12 февраля, 14:26
классно
Evgeny K17 уровень
25 сентября, 12:42
"/* Комментарий удален */" Тоже хочу посмотреть :((
Ильяс28 уровень, Москва
25 ноября 2017, 14:48
/* Комментарий удален */
Иван23 уровень, Москва
21 января, 16:39
Я не понимаю, почему при вызове метода printResult у объекта класса Read3Strings выводится содержимое метода run. Ведь не объявлено ни одного конструктора, который бы инициализировал объект. Я не понимаю в какой момент содержимое метода run попадает в объект класса Read3Strings?
Beslan Bavizhev39 уровень
29 января, 00:46
Что значит "почему при вызове метода printResult у объекта класса Read3Strings выводится содержимое метода run"? В printResult() вывели результирующую строку, а не "содержимое метода" run(). Объекты инициализируются в данном случае конструктором по умолчанию. В run() проваливаемся когда вызываем start() у объекта.
kmm121 уровень, Минск
12 февраля, 14:29
точно... а я на циклах..
Виктор Чистяков17 уровень, Санкт-Петербург
26 октября 2017, 01:59
/* Комментарий удален */
Евгений Бородин26 уровень, Екатеринбург
6 февраля, 19:26
не разбить, а объединить (склеить)
Аслан30 уровень, Москва
22 октября 2017, 18:25
/* Комментарий удален */
Codicus18 уровень
13 октября 2017, 19:42
public static class Read3Strings extends Thread {
    public String str = "";

    @Override
    public void run() {
        try {
            for (int i = 0; i < 3; i++) {
                str += reader.readLine() + " ";
            }
        } catch (IOException e) {
        }
    }

    public void printResult() {
        System.out.println(str);
    }
}
В main использовал while (t2.isAlive()){} перед t1.printResult().