我有一个html表单,我需要在servlet中获取表单数据,然后我需要对该数据进行一些数学运算。但是当我在执行数学运算时获得空指针异常。我无法弄清楚这一点。任何帮助,将不胜感激。谢谢..以下是我的一段代码。
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);
}
}
答案 0 :(得分:1)
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;
请注意,如果参数包含的内容不是数字,您也会遇到异常。
答案 1 :(得分:0)
您的amount
或time
变量为空。
答案 2 :(得分:0)
如果您的响应中缺少其中一个参数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");
这会将所有参数的列表转储到您的控制台
答案 3 :(得分:0)
String amount=request.getParameter("wpamt");
String time=request.getParameter("prd");
可能是
您的UI控件名称 wpamt和prd 未与jsp控件名称配对。。
检查文本框名称与getParameter中使用的名称相同。