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}">更新</a>&nbsp;&nbsp;&nbsp;

       <a href="<%=path%>/cn/servlet/ManagerServlet? flag =delete & m_id= ${manager.getId()}">删除</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){转换}

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

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

ps:第一次写博客,有很多不足的地方,希望各位大佬指正,我会慢慢改进哒!

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: java.lang.NumberFormatException:null 意味着尝试将空值(null)转换为数字时发生了错误。这通常是因为您在使用Integer.parseInt()或Double.parseDouble()等转换方法时传入了空值。应该在转换之前检查给定值是否为空。 ### 回答2: Java.lang.NumberFormatException: nullJava编程中常见的错误异常之一。这个异常通常发生在程序试图将一个字符串转换为数字类型的时候,而这个字符串不符合数字格式的要求。 当程序试图把某个字符串转换成数字类型的时候,Java会根据字符串的内容来判断其是否符合数字格式,如果不符合则会抛出NumberFormatExceptio:null异常。 例如,以下代码中,当将字符串“abc”转换为整数时,会抛出上述的异常: ``` String str = "abc"; int num = Integer.parseInt(str); ``` 这个异常的原因是Java无法将字符串“abc”解析成整数。如果想要解决这个问题,有以下几种办法: 1.检查字符串格式是否正确,确保它只包含数字字符。 2.使用try-catch语句来捕捉异常,然后在catch块中进行处理,例如输出错误信息。 3.对于无法处理的非数字字符串,可以用默认值替代,或者返回错误提示给用户,让其重新输入正确的值。 总之,当开发Java程序的时候,遇到java.lang.NumberFormatException交错应当保持冷静,仔细检查代码,找出问题的根源,然后采取对应的解决措施来避免这个异常的发生。 ### 回答3: java.lang.numberformatexception:nullJava中一个常见的异常(Exception),它通常出现在需要将字符串转换为数字时。当程序尝试将一个空(null)对象转换为数字时,就会出现这个异常。 一般来说,如果一个程序需要进行数字计算,那么输入的数据必须是数字类型。而当用户输入的数据是字符串类型时,需要将其转换为数字类型,这就需要使用Java中的方法来实现。例如,我们可以使用Java中的Integer.parseInt()方法或Double.parseDouble()方法将字符串类型转换为int或double类型。 当我们尝试使用这些方法将一个空的字符串转换为数字时,就会出现java.lang.numberformatexception:null异常。这是因为这些方法要求输入的字符串必须是一个有效的数字格式,如果输入的字符串为空,则无法进行转换。 为了避免出现这个异常,我们需要在使用这些方法进行字符串转换时,加入一些判断条件,比如判断输入的字符串是否为空,或者是否是一个合法的数字格式等。在代码中进行这些判断,可以避免程序出现异常,并提高程序的健壮性。 总之,java.lang.numberformatexception:nullJava中常见的一个异常,在处理数字计算时,我们需要特别注意避免出现这个异常,并做好相关的异常处理工作,在程序中加入异常处理代码,可以有效提高程序的稳定性和鲁棒性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值