Исключение нулевого указателя double - PullRequest
0 голосов
/ 24 мая 2011

Может кто-нибудь объяснить мне, почему я получаю NullPointerException здесь:

String s = request.getParameter("tbExample");
    _tbExample = new Double (Double.valueOf(s).doubleValue());

Ответы [ 3 ]

9 голосов
/ 24 мая 2011

с может быть нулевым.Согласно javadoc, если s равно null, valueOf выдаст исключение нулевого указателя.

1 голос
/ 24 мая 2011

Я понимаю, почему вы смущены здесь. Вы берете String, анализируете его в Double, превращаете его в double и снова в Double. Гораздо более простым решением является сделать

_tbExample = s == null ? null : Double.valueOf(s);

Это обрабатывает ситуацию, когда s равен null и превращает String в Double


Вот простая тестовая программа для вас.

Double _tbExample;

String s = null;
_tbExample = s == null ? null : Double.valueOf(s);
System.out.println("_tbExample="+_tbExample);

печать

_tbExample=null
1 голос
/ 24 мая 2011

Попробуйте проверить s на ноль, прежде чем продолжить.

Возможно, параметр tbExample не существует в вашем запросе. Поэтому null возвращается для указания этого факта и присваивается s. Затем он передается в Double.valueOf, что является неверным вводом.

Попробуйте что-то вроде этого:

String s = request.getParameter("tbExample");
if(s == null)
{
    // Handle the error.
    // You could log something, throw exception, exit early, etc.
    // Do whatever is appropriate for your application.
}
else
{
    _tbExample = new Double (Double.valueOf(s).doubleValue());
}
...