Kasey 发表于 2020-4-13 19:15:07

java.lang.NumberFormatException: null

Type 异常报告

消息 在 行处理 时发生异常

描述 服务器遇到一个意外的情况,阻止它完成请求。

Exception

org.apache.jasper.JasperException: 在 行处理 时发生异常

19:   String n1=request.getParameter("n");
20:   double sum=0.0;
21:   double temp=1.0;
22:   int m=Integer.parseInt(n1);
23:   for (int i=1;i<m;i+=2){
24:       sum+=temp/i;
25:       temp=-temp;

Stacktrace:

slience_缄默 发表于 2020-4-13 19:15:08

看报错提示很明显这里就是类型转换异常,用null去转int了,String n1=request.getParameter("n");这一行有问题,获取到的值是null,先排查下是不是getParameter("n")获取不到值,如果是获取不到值,确定下你提交的jsp表单里是否有name='n'的控件。

Kasey 发表于 2020-4-13 19:15:42

Stacktrace:
        org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:626)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:515)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Cause

java.lang.NumberFormatException: null
        java.lang.Integer.parseInt(Integer.java:542)
        java.lang.Integer.parseInt(Integer.java:615)
        org.apache.jsp.index_jsp._jspService(index_jsp.java:132)
        org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

倒戈卸甲 发表于 2020-4-13 19:25:01

很可能19行那里从request获取数据失败了

Kasey 发表于 2020-4-13 20:13:46

倒戈卸甲 发表于 2020-4-13 19:25
很可能19行那里从request获取数据失败了

想知道解决方法,网上查到的用了会出现新的问题

倒戈卸甲 发表于 2020-4-13 20:39:13

Kasey 发表于 2020-4-13 20:13
想知道解决方法,网上查到的用了会出现新的问题

按理说,根据参数名称获取参数值是request很基础的一个通用方法,使用就两步:从httpservlet拿到request,然后调用该方法。会不会你创建web项目时servlet没配置好。要不网上找个教程重新研究一下怎么配置

yuesezhenmei 发表于 2020-5-10 13:05:57

有兴趣可以看看这个码云:https://gitee.com/wen_jun_zhang/agency_completion
自己写的项目webpack搭建的
全栈 目前还在慢慢写
里面的用户登录 我写完了会返回用户已保存的数据
你可以参考我用nodejs写的API

slience_缄默 发表于 2020-9-16 11:22:08

还有个治本不治根的解决办法,就是加个判断,当获取到值为null时,就给n1赋值0,这样就不担心代码会异常了,规范的代码也应该是这样,String转int是有风险的,你得预知问题出现的可能,做预处理
String n1=request.getParameter("n");
if(n1 == null){
n1 = "0";
}
double sum=0.0;
double temp=1.0;
int m=Integer.parseInt(n1);
for (int i=1;i<m;i+=2){
sum+=temp/i;
temp=-temp;
}
页: [1]
查看完整版本: java.lang.NumberFormatException: null