Уровень 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);
}
}
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Почему никто не отвечает, обучение стоит…
br.ready() не видит берега в данном случае (Виндовз) и цикл получается бесконечный, печатая строки null )