Исключение Nullpointer при выполнении математических расчетов для введенных пользователем данных в сервлете - PullRequest
0 голосов
/ 13 марта 2012

У меня есть HTML-форма, и мне нужно получить данные формы в сервлете, а затем мне нужно выполнить некоторые математические операции с этими данными. Но когда я получаю исключение нулевого указателя при выполнении математической операции. Я не могу понять это. Любая помощь будет оценена. Спасибо .. ниже мой кусок кода.

import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigInteger;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class InterestServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        String amount=request.getParameter("wpamt");
        String time=request.getParameter("prd");
        int amt = Integer.parseInt(amount.trim());
        int period = Integer.parseInt(time.trim());

        int interest=(amt * period)/100;
        out.println("for"+period+"years the interest would be"+interest);
    }
}

Ответы [ 4 ]

1 голос
/ 13 марта 2012
String amount=request.getParameter("wpamt");
String time=request.getParameter("prd");
int amt = Integer.parseInt(amount.trim());
int period = Integer.parseInt(time.trim());

Если именно здесь вы получаете исключение NullPointerException (трудно сказать без трассировки стека и номеров строк), один из параметров отсутствует (не публикуется клиентом).

Если имеет смысл перейти к значениям по умолчанию, вы можете сделать

int amt = amount != null ? Integer.parseInt(amount.trim()): 100;
int period = period != null ? Integer.parseInt(time.trim()) : 5;

Обратите внимание, что вы также получите исключения, если параметр содержит нечто, не являющееся числом.

0 голосов
/ 13 марта 2012
String amount=request.getParameter("wpamt");
    String time=request.getParameter("prd");

это может быть

имена элементов управления вашего пользовательского интерфейса wpamt и prd не связаны с именами элементов управления jsp. .

checkимена текстовых полей совпадают с тем, что вы использовали в getParameter.

0 голосов
/ 13 марта 2012

Если в вашем ответе отсутствует один из параметров wpamt или prd, то при включении метода getParameter возвращается нулевая ссылка, а затем NPE выбрасывается, когда виртуальная машина пытается вызвать trim()на этом нулевой указатель .

Для проверки добавьте простой код отладки в начале вашего метода:

System.out.println("Parameter names - Start");
for (Object param:request.getParameterMap().keySet()) {
  System.out.println(param);
}
System.out.println("Parameter names - End");

Это выведет список всех параметров в вашу консоль

0 голосов
/ 13 марта 2012

Ваша переменная amount или time равна нулю.

...