Globus51
35 уровень

Уровень 32. Вопросы.

Пост из группы Архив info.javarush.ru
3276 участников
Уровень 32 3 лекция: StringReader, StringWriter Код в лекции для примера "Чтение из объекта reader и запись в объект writer" Выдает ошибку: Exception in thread "main" java.lang.NullPointerException at java.lang.StringBuilder.(StringBuilder.java:112) По всей видимости это происходит при 4-й итерации цикла, когда считывать из br собственно уже нечего и считывается null , который при попытке записи в StringBuilder и вызывает ошибку. В чём тут дело, почему пример не работает как надо? public static void main (String[] args) throws Exception { //эту строку должен будет прочитать Reader String test = "Hi!\n My name is Richard\n I'm a photographer\n"; //заворачиваем строку в StringReader StringReader reader = new StringReader(test); //Создаем объект StringWriter StringWriter writer = new StringWriter(); //переписываем строки из Reader во Writer, предварительно развернув их executor(reader, writer); //получаем текст, который был записан во Writer String result = writer.toString(); //выводем полученный из Writer’а текст на экран System.out.println("Результат: "+result); } public static void executor(Reader reader, Writer writer) throws Exception { BufferedReader br = new BufferedReader(reader); while (br.ready()) { //читаем строку из Reader’а String line = br.readLine(); //разворачиваем строку задом наперед StringBuilder sb = new StringBuilder(line); String newLine = sb.reverse().toString(); //пишем строку в Writer writer.write(newLine); } }
Комментарии (4)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизироваться
Globus51 35 уровень
7 октября 2017, 17:31
Так что там, код в лекции правильный или нет?
Почему никто не отвечает, обучение стоит…
Globus51 35 уровень
23 сентября 2017, 15:13
Только вот это в комментах:
br.ready() не видит берега в данном случае (Виндовз) и цикл получается бесконечный, печатая строки null )
lichMax 40 уровень, Санкт-Петербург
23 сентября 2017, 15:00
я отладка что говорит?
lichMax 40 уровень, Санкт-Петербург
23 сентября 2017, 15:09
Ладно, сам проверил. Да, когда в потоке заканчиваются строки, то кидается NPE. Хм. Выходом конечно является проверять в условии продолжения цикла, является ли нуллом очередная строка, полученная из потока. Но странно, что такие проблемы есть с ready(). Хотя что-то про это слышал. А что пишут в комментах к этому уроку?