Loading...
Shirdor avatar Shirdor 131 Точки

ALL CAPITALS взима null

здравейте. ето го кода ->http://pastebin.com/yVcjDfB2

проблема ми е че в инпут взима nullи то след това нормално да не си върви.

Тагове:
0
Java Advanced
MapuH avatar MapuH 35 Точки
Best Answer
PrintWriter pW = new PrintWriter(new FileWriter("lines"));

Tова ти изтрива съдържанието на входящия файл. Първо го прочети и обработи редовете, а чак накрая пиши върху него. ;)

2
Filkolev avatar Filkolev 4482 Точки

Искаш да кажеш, че input по начало е null? Според документацията, readLine() методът връща null, когато е достигнат края на стрийма. Провери си файла, от който четеш, изглежда е празен.

1
IskrenPenev avatar IskrenPenev 177 Точки

Мисля, че трябва да затвориш потока след четенето, да го 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)

1
Shirdor avatar Shirdor 131 Точки

блаодаря ви много. цялата работа беше че pW прецакваше всичко. пак много благодаря.

0
baxlash avatar baxlash 31 Точки

Когато създаваш PrintWriter, той ти реиницилизира файла, т.е. изтрива всичко, което е в него. А когато се опитваш да четеш от празен файл, винаги ще ти връща null, защото няма какво да прочете.

Трябва първо да прочетеш информацията във файла и да я запазиш в подходяща форма, след това да създадеш PrintWriter и да запишеш обработената информация обратно във файла.

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.