关于java.lang.NumberFormatException: null的问题及解决

 更新时间:2023年09月20日 09:02:46   作者:熬夜分子  
这篇文章主要介绍了关于java.lang.NumberFormatException: null的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

java.lang.NumberFormatException: null

不知道大家有没有像我一样常常因为在代码中多加了一个空格或名字写错一个字母,在报错后找半天都找不出来错在哪,叫同事来帮忙解决,找到问题所在后真的想狠狠给自己一巴掌,总是犯这种低级错误,有被无语到~

接下来进入正题

我想点击对应的更新|删除 时跳转到对应的页面,代码如下:

<c:forEach items="${listManager}" var="manager">
    <tr class="tr2">
       <td>${manager.id}</td>
       <td>${manager.name}</td>
       <td>${manager.price}</td>
       <td>${manager.introduce}</td>
       <td><a href="<%=path%>/cn/servlet/ManagerServlet?flag = update & m_id =${manager.id}" rel="external nofollow" >更新</a>&nbsp;&nbsp;&nbsp;
       <a href="<%=path%>/cn/servlet/ManagerServlet? flag =delete & m_id= ${manager.getId()}" rel="external nofollow" >删除</a>
      </td>
     </tr>
</c:forEach>

对应的MangerServlet代码:

 if (flag.equals("delete")){
            System.out.println("=======delete"+flag);
            String m_id = req.getParameter("m_id");
            System.out.println(m_id);
            //将String类型的m_id转换成int型
            Integer id = Integer.parseInt(m_id.trim());
            System.out.println("---id--"+id);
            ManagerDao managerDao = new ManagerDao();
            int m = managerDao.delManager(id);
            String path = "";
            if (m==1){
                List<Manager>listManager ;
                listManager = managerDao.list();
               // HttpSession session = req.getSession();
                //session.setAttribute("listManager",listManager);
                req.setAttribute("listManager",listManager);
                path="/manager/menu.jsp";
            }else {
                path = "/error.jsp";
            }
            RequestDispatcher dispatcher = req.getRequestDispatcher(path);
            dispatcher.forward(req,resp);
        }else if (flag.equals("update")){
            System.out.println("=======update"+flag);
            String m_id = req.getParameter("m_id");
            System.out.println(m_id);
            int id = Integer.parseInt(m_id);
            ManagerDao managerDao = new ManagerDao();
            Manager manager = managerDao.getManager(id);
            req.setAttribute("manager",manager);
            RequestDispatcher dispatcher = req.getRequestDispatcher("/manager/update.jsp");
            dispatcher.forward(req,resp);

ManagerDao层代码:

public int delManager(int id) {
        //数据库连接、
        Connection conn  = JDBC.getConnection();
        Statement state = null;
        // System.out.println(u);
        try {
            state  = conn.createStatement();
            String sql = "delete  from menus where  id="+id;
            System.out.println(sql);
            m = state.executeUpdate(sql);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        JDBC.close(conn, state,null);
        return  m;
    }
    public Manager getManager(int id) {
        //数据库连接、
        Connection conn  = JDBC.getConnection();
        Statement state = null;
        //局部变量没有初始值
        Manager manager = null;
        // System.out.println(u);
        try {
            state  = conn.createStatement();
            String sql = "select *  from menus where  id="+id;
            ResultSet rs = state.executeQuery(sql);
            if(rs.next()){
                manager = new Manager();
                manager.setId(rs.getInt(1));
                manager.setName(rs.getString(2));
                manager.setPrice(rs.getString(3));
                //manager.setPrice(rs.getBigDecimal(3));
                manager.setIntroduce(rs.getString(4));
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        JDBC.close(conn, state,null);
        return  manager;
    }

运行结果错误截图

去网上找尝试了各种方法都没能解决,

最后叫来了朋友帮忙看,最后她说这里不能有空格,否则就会报500的错误,

还有我把update写成了updata,然后界面怎么都跳不过去报错,我都服了我自己...

总结

1.大部分时候是类型转化的问题

比如这样转化:

int state = Integer.parseInt(request.getParameter(“state”))

在转换过程中可能存在空格,或者传递url值的时候忘了传递参数,或者传递错误,导致获取到的值为null。

还有一种就是低级错误了,就是mysql·或者你·写的数据库里,有参数是空的,就会导致问题出现得把参数值补上,不能有空缺。

2.解决方法

2.1.在转换之前去空格,Integer.parseInt(numString.trim()) ;

2.2.在转换之前判空串:if(s!=""){转换}

2.3.在转换之前判空:if(s!=null){转换}

在适当的位置添加控制台打印语句,方便检查那一语句出错。

最后,敲代码一定要细心 细心 再耐心呐~~~

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 基于SpringCloud手写一个简易版Sentinel

    基于SpringCloud手写一个简易版Sentinel

    SpringCloud Alibaba Sentinel是当前最为流行一种熔断降级框架,简单易用的方式可以快速帮助我们实现服务的限流和降级,保证服务的稳定性。
    2021-05-05
  • Java通过Modbus简单实现数采的示例代码

    Java通过Modbus简单实现数采的示例代码

    本文介绍了Java通过Modbus简单实现数采,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11
  • 深入浅析springsecurity入门登录授权

    深入浅析springsecurity入门登录授权

    SpringSecurity为我们提供了基于注解的权限控制方案,这也是我们项目中主要采用的方式,我们可以使用注解去指定访问对应的资源所需的权限,这篇文章主要介绍了springsecurity入门登录授权,需要的朋友可以参考下
    2024-05-05
  • 详解Springboot整合ActiveMQ(Queue和Topic两种模式)

    详解Springboot整合ActiveMQ(Queue和Topic两种模式)

    这篇文章主要介绍了详解Springboot整合ActiveMQ(Queue和Topic两种模式),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Java8中如何通过方法引用获取属性名详解

    Java8中如何通过方法引用获取属性名详解

    这篇文章主要给大家介绍了关于Java8中如何通过方法引用获取属性名的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 详解Java中如何使用日志库在代码中添加日志

    详解Java中如何使用日志库在代码中添加日志

    这篇文章主要为大家介绍了Java中如何使用日志库在代码中添加日志详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • mybatis中的setting配置详解

    mybatis中的setting配置详解

    这篇文章主要给大家介绍了关于mybatis中setting配置的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • SpringBoot微信扫码支付的实现示例

    SpringBoot微信扫码支付的实现示例

    这篇文章主要介绍了SpringBoot微信扫码支付的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • J2EE中的struts2表单细节处理

    J2EE中的struts2表单细节处理

    这篇文章主要介绍了J2EE中的struts2表单细节处理的相关资料,需要的朋友可以参考下
    2017-06-06
  • Java实现字符串反转

    Java实现字符串反转

    这篇文章介绍了Java实现字符串反转的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04

最新评论