关于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){转换}

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

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

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

相关文章

  • Spring的嵌套事务(Propagation.NESTED)到底是个啥案例代码讲解

    Spring的嵌套事务(Propagation.NESTED)到底是个啥案例代码讲解

    SavePoint是数据库事务中的一个概念, 可以将整个事务切割为不同的小事务,可以选择将状态回滚到某个小事务发生时的样子,本文通过案例代码讲解Spring的嵌套事务(Propagation.NESTED)到底是个啥,感兴趣的朋友跟随小编一起看看吧
    2023-01-01
  • SpringBoot中的自动配置原理详解

    SpringBoot中的自动配置原理详解

    这篇文章主要介绍了SpringBoot中的自动配置原理详解,springboot的自动配置类直观的表现就是通过一系列的注解,使得springboot项目在启动的时候从配置文件中加载需要自动配置的类,注入容器中,需要的朋友可以参考下
    2024-01-01
  • 总结Java常用到的六个加密技术和代码

    总结Java常用到的六个加密技术和代码

    大家要记住现代密码学最重要的原则柯克霍夫原则:数据的安全基于密钥而不是算法的保密。也就是说即使密码系统的任何细节已为人悉知,只要密匙未洩漏,它也应是安全的。这篇文章给大家介绍了6个常用的加密技术和代码。
    2016-07-07
  • Java使用fastjson对String、JSONObject、JSONArray相互转换

    Java使用fastjson对String、JSONObject、JSONArray相互转换

    这篇文章主要介绍了Java使用fastjson对String、JSONObject、JSONArray相互转换,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 基于IOC容器实现管理mybatis过程解析

    基于IOC容器实现管理mybatis过程解析

    这篇文章主要介绍了基于IOC容器实现管理mybatis过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Java1.8中LocalDate方法使用总结

    Java1.8中LocalDate方法使用总结

    LocalDate是Java8中的一个日期类,用于表示年月日,它是不可变的,线程安全的,下面这篇文章主要给大家介绍了关于Java1.8中LocalDate方法使用的相关资料,需要的朋友可以参考下
    2024-03-03
  • 解决mapper.xml中resultType映射类型的问题

    解决mapper.xml中resultType映射类型的问题

    这篇文章主要介绍了解决mapper.xml中resultType映射类型的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Spring中的事件发布机制原理解析

    Spring中的事件发布机制原理解析

    这篇文章主要介绍了Spring中的事件发布机制原理解析,当我们关心spring容器什么时候刷新,或者想在spring容器刷新的时候做一些事情,监听关心的事件,主要就是在ApplicationListener中写对应的事件,需要的朋友可以参考下
    2023-11-11
  • Java8处理集合的优雅姿势之Stream

    Java8处理集合的优雅姿势之Stream

    这篇文章主要给大家介绍了关于Java8优雅处理集合之Stream的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用java8具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • Java多线程之 FutureTask:带有返回值的函数定义和调用方式

    Java多线程之 FutureTask:带有返回值的函数定义和调用方式

    这篇文章主要介绍了Java多线程之 FutureTask:带有返回值的函数定义和调用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07

最新评论