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

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

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

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

相关文章

  • Springboot Caffeine本地缓存使用示例

    Springboot Caffeine本地缓存使用示例

    这篇文章主要介绍了Springboot Caffeine本地缓存使用示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Java 动态编译在项目中的实践分享

    Java 动态编译在项目中的实践分享

    在 Java 中,动态编译是指在运行时动态地编译 Java 源代码,生成字节码,并加载到 JVM 中执行,动态编译可以用于实现动态代码生成、动态加载、插件化等功能,本文将给大家分享一下Java 动态编译在项目中的实践,感兴趣的同学跟着小编一起来看看吧
    2023-07-07
  • springMVC+jersey实现跨服务器文件上传

    springMVC+jersey实现跨服务器文件上传

    这篇文章主要介绍了springMVC+jersey实现跨服务器文件上传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • RocketMQ消息队列实现随机消息发送当做七夕礼物

    RocketMQ消息队列实现随机消息发送当做七夕礼物

    这篇文章主要为大家介绍了RocketMQ消息队列实现随机消息发送当做七夕礼物,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Java如何处理数据成为树状结构

    Java如何处理数据成为树状结构

    这篇文章主要介绍了Java如何处理数据成为树状结构问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • springboot启动时如何获取端口和项目名

    springboot启动时如何获取端口和项目名

    这篇文章主要介绍了springboot启动时如何获取端口和项目名,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 详解Java正则表达式中Pattern类和Matcher类

    详解Java正则表达式中Pattern类和Matcher类

    java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。包括两个类Pattern和Matcher Pattern,Pattern是一个正则表达式经编译后的表现模式。Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。
    2016-12-12
  • Java实现PDF转Word的示例代码(无水印无页数限制)

    Java实现PDF转Word的示例代码(无水印无页数限制)

    这篇文章主要为大家详细介绍了如何利用Java语言实现PDF转Word文件的效果,并可以无水印、无页数限制。文中的示例代码讲解详细,需要的可以参考一下
    2022-05-05
  • List集合多个复杂字段判断去重的案例

    List集合多个复杂字段判断去重的案例

    今天小编就为大家分享一篇关于List集合多个复杂字段判断去重的案例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • @Valid和@Validated注解校验以及异常处理方式

    @Valid和@Validated注解校验以及异常处理方式

    在Javaweb开发中,防止数据库恶意攻击是至关重要的,尽管前端校验可以起到一定的筛选作用,但通过工具如postman直接对后端发起请求的情况仍然需要后端进行严格的数据校验,Java生态下,@Valid注解配合SpringBoot提供了一个便捷高效的后端数据校验方案
    2024-11-11

最新评论