NullPointerException (когда строка инициализируется) - PullRequest
0 голосов
/ 29 октября 2011

Ниже приведен фрагмент, который выбрасывает java.lang.NullPointerException.

else if(jRadioButton2.isSelected()) {
             // chrome selected
             String chrome_count_S="0";
             int chrome_count_I=0;
             FileWriter writer = new FileWriter("D:\\UnderTest\\MyFirstPoll\\build\\classes\\poll_count\\Chrome.txt");
             FileReader reader = new FileReader("D:\\UnderTest\\MyFirstPoll\\build\\classes\\poll_count\\Chrome.txt");
             BufferedReader br = new BufferedReader(reader);
             while((chrome_count_S = br.readLine()) != null) {
                  chrome_count_I = Integer.parseInt(chrome_count_S);
                  chrome_count_I++;
                  chrome_count_S = Integer.toString(chrome_count_I);
             }
             writer.write(chrome_count_S);
             writer.close();

При обнаружении этого фрагмента выбрасывается NullPointerException. Если я заменю аргумент writer.write(chrome_count_S); на writer.write("chrome_count_S"); I.E. String, я не получаю никаких исключений. Иначе, почему я получаю исключение, когда я инициализировал строку chrome_count_S?

Ответы [ 4 ]

6 голосов
/ 29 октября 2011

Цикл while останавливается, когда readline() равен null, и записывает текущее значение в переменную chrome_count_S.

while((chrome_count_S = br.readLine()) != null)

То есть chrome_count_S будет null после цикла и по команде write.

=== ОБНОВЛЕНИЕ ===

Удалите строку chrome_count_S в цикле и возьмите значение из chrome_count_I во время записи:

while((chrome_count_S = br.readLine()) != null) {
    chrome_count_I = Integer.parseInt(chrome_count_S);
    chrome_count_I++;
}
writer.write(Integer.toString(chrome_count_I));
2 голосов
/ 29 октября 2011

Ваша петля while не существует , пока chrome_count_S не станет null.Поэтому, конечно, вызов writer.write() вызовет NullPointerException.

1 голос
/ 29 октября 2011

вероятно, потому что до writer.write у вас есть цикл while

while((chrome_count_S = br.readLine()) != null)

, который заканчивается только тогда, когда br.readline() ставит NULL в chrome_count_S

0 голосов
/ 29 октября 2011

Даже если вы инициализировали его, в некоторый момент br.readLine () назначает значение null для chroe_count_S.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...