Почему после ввода первой строки выдает ошибки? Валидатор все принял!!!
Но как работает я так и не увидел.
public class Solution {
public static volatile BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws InterruptedException {
Read3Strings t1 = new Read3Strings();
Read3Strings t2 = new Read3Strings();
t1.start();
t1.join();
t2.start();
t2.join();
//add your code here - добавьте код тут
t1.printResult();
t2.printResult();
}
public static class Read3Strings extends Thread{
String s1, s2, s3;
public void run() {
try {
if (reader.ready()) {
s1 = reader.readLine();
s2 = reader.readLine();
s3 = reader.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void printResult(){
System.out.println(s1 + " " + s2 + " " + s3);
}
}//add your code here - добавьте код тут
}
Антон
41 уровень
Почему??
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Dmitry
4 августа 2019, 10:41полезный
Запустил выше приведенный код и у меня он не выдает ошибку, а просто выводит все null. А команда reader.ready() проверяет есть ли невычитанные данные в потоке на сколько я помню. И пока в консоль ничего не введешь - данных соответственно не будет, а пока не запросишь чтение - их туда не успеешь ввести т.к. он не ждет ввода. В общем, при чтении с консоли эта проверка лишняя - у меня приведенный код корректно выполнился после того как я ее просто убрал.
+1
Антон
4 августа 2019, 12:30
Спасибо.
Так и есть строка reader.ready() лишняя, странно что валидатор пропустил.
А так я так понял проблема была в том что в настройках не тот solution был выбран.
Каждый раз надо выбирать не знаю почему не обновляет на новый.
0
Dmitry
4 августа 2019, 17:13
А валидатор скорее всего переопределяет переменную System.in (ну или еще каким то образом) на инпут из файла, где уже заранее лежит тестовый текст, поэтому reader.ready() - true и все проходит. А чтобы в настройках каждый раз solution не выбирать - можно пускать стрелкой напротив main например - он сам под текущий файл будет создавать настройку (правда там иногда их чистить надо, иначе много скапливается) если я правильно понял на счет solution.
0
Максим
20 августа 2019, 14:28
Вот же бред, в предыдущей задаче с вводом в консоль без этой проверки валидацию было не пройти, а тут с ней не запустить код.
0