java.lang.NumberFormatException: null at java.lang.Integer.parseInt(Integer.java:415) at java.lang

问题应该就出在那你那个:Integer.parseInt(变量)上,
从报错来说,应该是括号里面的“变量”是null,当然也就无法转换为Integer类型了。
建议你检查一下这几行代码:
1、flag = Integer.parseInt(flag1);  //flag1为null,就会报你说的错误
2、int Price= Integer.parseInt(price); //price为null,就会报你说的错误
反正有Integer.parseInt()的地方都看一看,parseInt()方法括号里面的不能是null,也不能是其他无法转换为数字的字符串
  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package com.bjsxt.servlet; import com.bjsxt.entity.User; import com.bjsxt.service.UserService; import com.bjsxt.service.impl.UserServiceImpl; import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.*; import java.io.IOException; import java.net.URLEncoder; import java.sql.Date; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class UserServlet extends BaseServlet { // @Override // protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // //解决POST表单的中文乱码问题 // request.setCharacterEncoding("utf-8"); // //接收method属性的值 // String methodName = request.getParameter("method"); // // //根据method属性的值调用相应的方法 // if("login".equals(methodName)){ // this.login(request,response); // }else if("register".equals(methodName)){ // this.register(request,response); // }else if("logout".equals(methodName)){ // this.logout(request,response); // } // // } public void show(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取表单的数据 String userId = request.getParameter("userId"); if(userId == null){ userId = ""; } String strAge = request.getParameter("minAge"); int minAge = 0; try{ minAge = Integer.parseInt(strAge); //"12" "abc" }catch(NumberFormatException e){ e.printStackTrace(); } //调用业务层完成查询操作 UserService userService = new UserServiceImpl(); //List<User> userList = userService.findAll(); List<User> userList = userService.find(userId,minAge); //List<User> userList = null; //List<User> userList = new ArrayList<User>(); //跳转到show.jsp显示数据 request.setAttribute("userId",userId); request.setAttribute("minAge",strAge); request.setAttribute("ulist",userList); request.getRequestDispatcher("/admin/show.jsp").forward(request,response); } public void logout(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //结束当前的session request.getSession().invalidate(); //跳转回登录页面 response.sendRedirect(request.getContextPath()+"/admin/login.jsp"); } public void register(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //request.setCharacterEncoding("utf-8"); //1.接收来自视图层的表单数据 String userId = request.getParameter("userId"); String realName = request.getParameter("realName"); String pwd = request.getParameter("pwd"); String rePwd = request.getParameter("repwd"); int age = Integer.parseInt(request.getParameter("age"));// "23" String [] hobbyArr = request.getParameterValues("hobby"); String strDate = request.getParameter("enterDate");//"1999-12-23" Date enterDate = Date.valueOf(strDate); //util.Date SimpleDateFormat //判断两次密码是否相同 if(pwd == null || !pwd.equals(rePwd)){ request.setAttribute("error","两次密码必须相同"); request.getRequestDispatcher("/admin/register.jsp").forward(request,response); return; } //2.调用业务层完成注册操作并返回结果 User user = new User(userId,realName,pwd,age, Arrays.toString(hobbyArr),enterDate); UserService userService = new UserServiceImpl(); int n = userService.register(user); //3.根据结果进行页面跳转 if(n>0){ response.sendRedirect(request.getContextPath()+"/admin/login.jsp"); }else{ request.setAttribute("error","注册失败"); request.getRequestDispatcher("/admin/register.jsp").forward(request,response); } } public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //解决POST表单的中文乱码问题 //request.setCharacterEncoding("utf-8"); //获取用户名和密码 request 内建对象 请求 String username = request.getParameter("username"); String password = request.getParameter("password"); String rememberme = request.getParameter("rememberme"); //调用下一层判断登录是否成功,并返回结果 //进行服务器端的表单验证 if(username ==null || "".equals(username)){ request.setAttribute("error","用户名不能为空JSP"); request.getRequestDispatcher("/admin/login.jsp").forward(request,response); return; } if (username.length()<=6){ request.setAttribute("error","用户名长度必须大于6JSP"); request.getRequestDispatcher("/admin/login.jsp").forward(request,response);//后面语句还会执行 return; //后面的语句不再执行 } // boolean flag = false;//默认失败 // if(username.indexOf("sxt")>=0 || username.contains("尚学堂")){ // flag = true; // } User user = null;//默认登录失败 // UserDao userDao = new UserDaoImpl(); // user = userDao.find(username,password); UserService userService = new UserServiceImpl(); user = userService.login(username,password); //userService.addOrder("shoppingCart"); //输出结果 if(user != null){ //登录成功才记住我 //1.办理会员卡 String username2 = URLEncoder.encode(username,"utf-8"); Cookie cookie1 = new Cookie("uname",username2); Cookie cookie2 = new Cookie("password",password); //2.指定会员卡的作用范围,默认范围是当前目录 /servlet/LoginServlet /admin/login.jsp //cookie1.setPath("/"); //当前服务器 cookie1.setPath("/myservlet2/"); //当前项目 cookie2.setPath("/myservlet2"); //3.指定会员卡的作用时间 if("yes".equals(rememberme)){ cookie1.setMaxAge(60*60*24*10); //默认的时间浏览器不关闭的时间;-1 表示一直有效 cookie2.setMaxAge(60*60*24*10); }else{ cookie1.setMaxAge(0); cookie2.setMaxAge(0); } //4.将会员卡带回家 response.addCookie(cookie1); response.addCookie(cookie2); //成功跳转到成功页面 //out.println("登录成功"); // /servlet/LoginServlet // /servlet/success.jsp // request.getRequestDispatcher("/admin/success.jsp").forward(request,response); HttpSession session = request.getSession(); // session.setAttribute("username",username); session.setAttribute("user",user); //response.sendRedirect("/myservlet2/admin/success.jsp"); //response.sendRedirect("https://www.bjsxt.com:443/news/11377.html"); //response.sendRedirect("http://localhost:8080/myservlet2/admin/success.jsp"); //response.sendRedirect("/myservlet2/admin/success.jsp"); //response.sendRedirect("/myservlet2/admin/success.jsp"); //response.sendRedirect(request.getContextPath()+"/admin/success.jsp"); //http://192.168.58.250:8080/myservlet2/servlet/LoginServlet //http://192.168.58.250:8080/myservlet2/admin/success.jsp //登录成功后,网站的访问人数+1 //1.获取当前的访问人数 ServletContext context = this.getServletContext(); Integer count2 = (Integer) context.getAttribute("count"); //2.人数+1 if(count2 == null){ //第一个用户 count2 = 1; }else{ count2++; } //3.再存放到application作用域中 context.setAttribute("count",count2); //http://192.168.58.250:8080/myservlet2/servlet/admin/success.jsp response.sendRedirect("../admin/success.jsp"); }else{ //失败跳转回登录页面 //out.println("登录失败"); request.setAttribute("error","用户名或者密码错误"); // RequestDispatcher rd = request.getRequestDispatcher("/admin/login.jsp"); // rd.forward(request,response); //RequestDispatcher rd = request.getRequestDispatcher("http://localhost:8080/myservlet2/admin/login.jsp"); //RequestDispatcher rd = request.getRequestDispatcher("/admin/login.jsp"); //http://192.168.58.250:8080/myservlet2/servlet/admin/login.jsp RequestDispatcher rd = request.getRequestDispatcher("../admin/login.jsp"); rd.forward(request,response); } } }
实验指导书 实验名称:包、接口与异常处理 学时安排:2 实验类别:综合设计型实验 实验要求:1人1组  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 一、实验目的 1、掌握java字符串处理方法。 2、掌握java面向对象的概念。 3、掌握java自定义异常和处理。 4、 通过实验,对Java程序的开发有一个深入了解。 二、实验内容 1.阅读并分析程序TestException.java。(见附件PPT文件) 2.设计一个程序,其功能是从命令行输入整数字符串,再将该整数字符串转换为整数, 输入的数据可能具有以下格式:12345、123 45、123xyz456 3.编写一个四则运算程序,要求用户输入一个x值和一个y值,以及一个四则运算符。如 果用户输入正确,则给出运算结果,如果输入错误,则给出出错警告。(利用异常处理 编程,尽量使用java现成的异常类,如没有可自定义异常类 ) 三、程序代码 1. public class TestException { public TestException() { } boolean testEx() throws Exception{ boolean ret = true; try{ ret = testEx1(); }catch (Exception e){ System.out.println("testEx, catch exception"); ret = false; throw e; } finally{ System.out.println("testEx, finally; return value="+ret); return ret; } } boolean testEx1() throws Exception{ boolean ret = true; try{ ret = testEx2(); if (!ret){ return false; } System.out.println("testEx1, at the end of try"); return ret; }catch (Exception e){ System.out.println("testEx1, catch exception"); ret = false; throw e; } finally{ System.out.println("testEx1, finally; return value="+ret); return ret; } } boolean testEx2() throws Exception{ boolean ret = true; try{ int b=12; int c; for (int i=2;i>=-2;i--){ c=b/i; System.out.println("i="+i); } return true; }catch (Exception e){ System.out.println("testEx2, catch exception"); ret = false; throw e; } finally{ System.out.println("testEx2, finally; return value="+ret); return ret; } } public static void main(String[] args) { TestException testException1 = new TestException(); try{ testException1.testEx(); }catch(Exception e){ e.printStackTrace(); } } } 2. import java.util.*; public class test { public static void main(String args[]) { int i, number=0; String str; try { for(i=0;i<args.length;i++) { str=args[i]; number=Integer.parseInt(str); System.out.printf("第%d个字符转换为整数后:%d\n",i+1,number); } } catch(NumberFormatException e) { System.out.println("输入字符串不正确!"); } } } 3. import java.io.*; import java.util.*; public class ExceptionExam { void addition(double x,double y) //加法运算
### 回答1: java.lang.NumberFormatException是一个Java异常类,表示在将一个字符串转换为数字时发生了格式错误。在这种情况下,异常消息会显示为"null java.lang.Integer.parseInt(integer.jav"。 这个异常通常发生在使用Integer.parseInt()方法时,当输入字符串不是一个合法的整数时,就会抛出这个异常。可能的原因包括: 1. 输入字符串为空或为null。在这种情况下,无法将空字符串或null转换为整数,因此会抛出NumberFormatException。 2. 输入字符串包含了非数字字符。Integer.parseInt()方法只能处理包含数字字符的字符串,当输入字符串包含了非数字字符(如字母、特殊符号等)时,会抛出NumberFormatException。 3. 输入字符串超出了整数的范围。整数的范围在Java中是有限的,如果输入字符串表示的数字超出了整数的范围,就会抛出NumberFormatException。 要解决这个异常,我们可以在调用Integer.parseInt()方法之前进行一些验证操作,以确保输入字符串符合要求。例如,可以使用正则表达式检查输入字符串是否只包含数字字符,并在转换之前进行验证。另外,还可以使用try-catch块来捕获NumberFormatException异常并进行相应的处理,比如输出错误信息或者给出合适的提示。 总而言之,NumberFormatException是一个表示数字格式错误的异常类,在使用Integer.parseInt()方法时可能会出现。为了避免这个异常,我们需要确保输入字符串符合转换为整数的要求,或使用适当的方法来处理这个异常。 ### 回答2: java.lang.NumberFormatException是一个在字符串转换为数字时可能会抛出的异常。在这个特定的错误消息中,异常被引发的原因是传递给Integer.parseInt()方法的参数为空。 Integer.parseInt()方法用于将字符串转换为整数。当传递一个空字符串或null时,该方法无法将其解析为有效的整数,因此会引发NumberFormatException。这是因为无法将空字符串或null解析为有效的数字表示形式。 要解决这个问题,需要确保传递给Integer.parseInt()方法的参数不是空的。可以使用条件语句,如if语句,来检查参数是否为空,如果为空,可以选择给参数赋予一个默认值或者进行其他的错误处理。 以下是一个示例代码,演示如何处理这个异常: ``` String str = null; try { int num = 0; if (str != null) { num = Integer.parseInt(str); } else { // 处理参数为空的情况 // 可以给参数赋予一个默认值或者进行其他的错误处理 } // 使用转换后的整数进行其他操作 // ... } catch (NumberFormatException e) { // 处理异常情况 // ... } ``` 在这个示例中,首先将参数赋给一个临时变量str。然后在try块中使用条件语句来检查str是否为空,如果不为空,将其转换为整数并赋给num变量。如果str为空,则可以根据具体需求进行处理。 最后,在catch块中捕获NumberFormatException异常,可以选择在此处处理异常,例如打印错误消息或采取其他适当的措施。 总之,如果在使用Integer.parseInt()方法时遇到像java.lang.NumberFormatException: null的错误消息,需要检查传递给方法的参数是否为空,并根据具体情况进行适当的处理。 ### 回答3: java.lang.NumberFormatExceptionJava编程语言中的一个异常,它表示当尝试将一个无效的字符串转换为数字时出现了问题。在给定的情况下,错误信息显示为"null java.lang.Integer.parseInt(Integer.java)"。 这个异常通常会发生在通过Integer.parseInt()方法将字符串转换为整数时。NumberFormatException的原因可能是输入的字符串不符合整数的格式要求,例如包含非数字字符或空格。在给定错误信息中,"null"表示输入的字符串为空。 解决这个问题的方法是确保将正确的字符串输入到Integer.parseInt()方法中。要避免NumberFormatException,可以使用try-catch块来捕获并处理异常。在try块中,可以尝试将字符串转换为整数,并在catch块中处理NumberFormatException。 以下是一个示例代码片段,演示如何处理这个异常: ```java try { String str = ""; // 这里输入字符串 int num = Integer.parseInt(str); // 在这里处理转换后的整数 } catch (NumberFormatException e) { System.out.println("输入的字符串不是有效的整数"); } ``` 在上面的代码中,我们将输入的字符串赋给变量`str`,然后尝试将其转换为整数。如果转换成功,就可以在try块中继续处理转换后的整数。如果转换失败(出现NumberFormatException),则在catch块中输出错误消息。 请注意,在实际的应用程序中,可能需要根据具体需求做更多的异常处理,例如提供用户友好的错误提示或重新要求用户输入正确的整数字符串。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值