ALL CAPITALS взима null
здравейте. ето го кода ->http://pastebin.com/yVcjDfB2
проблема ми е че в инпут взима nullи то след това нормално да не си върви.
здравейте. ето го кода ->http://pastebin.com/yVcjDfB2
проблема ми е че в инпут взима nullи то след това нормално да не си върви.
PrintWriter pW = new PrintWriter(new FileWriter("lines"));
Tова ти изтрива съдържанието на входящия файл. Първо го прочети и обработи редовете, а чак накрая пиши върху него. ;)
Искаш да кажеш, че input по начало е null? Според документацията, readLine() методът връща null, когато е достигнат края на стрийма. Провери си файла, от който четеш, изглежда е празен.
Мисля, че трябва да затвориш потока след четенето, да го flush-неш и тогава да преминеш към писане.
Освен това това взема null понеже на след всички операции в while цикъла ти input отново чете следващия ред, (а след последния ред с текст, следващия е null ) тоест за последна стойност на input винаги имаш null.Това можеш да го оправиш така:
String input;
ArrayList<String> strings = new ArrayList<>();
while ((input=bR.readLine()) != null) {
strings.add(input.toUpperCase());
}
Още един съвет от мен е да ползваш try-with-resources за да ловиш грешките и да си спестиш "ръчното" затваряне и обновяване на потока. ( правиш си по 1 блок за reader и 1 за writer)
блаодаря ви много. цялата работа беше че pW прецакваше всичко. пак много благодаря.
Когато създаваш PrintWriter, той ти реиницилизира файла, т.е. изтрива всичко, което е в него. А когато се опитваш да четеш от празен файл, винаги ще ти връща null, защото няма какво да прочете.
Трябва първо да прочетеш информацията във файла и да я запазиш в подходяща форма, след това да създадеш PrintWriter и да запишеш обработената информация обратно във файла.