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

  • 9
  • Недоступна
1. В классе Solution создать public static класс нити Read3Strings унаследовавшись от Thread. 2. В методе run реализовать чтение с консоли трех строк. 3. Три подряд введенных строки должны считываться в одной нити и объединяться в одну строку через пробел. 4. В методе main вывести результат для кажд
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (47)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Иван23 уровень
2 ноября 2018, 12:55
у меня вообще прошла без reader.ready(); просто ввод строк
IceBerg20 уровень, Днепр
28 декабря 2018, 19:51
А зачем, если в нас потоки не работают одновременно?
ezhilo8522 уровень
18 октября 2018, 23:13
У кого выводит null при использовании простой строки в качестве результата - попробуйте инициализировать строку "".
Максим18 уровень
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 почему-то оказался не готов - рискуем получить пустой список
IceBerg20 уровень, Днепр
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
точно... а я на циклах..
Виктор Чистяков17 уровень, Санкт-Петербург
26 октября 2017, 01:59
/* Комментарий удален */
Евгений Бородин26 уровень, Екатеринбург
6 февраля 2018, 19:26
не разбить, а объединить (склеить)
Аслан31 уровень, Москва
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().