如何在我的servlet中修复java.lang.NumberFormatException:for string“”?

时间:2014-07-27 00:19:01

标签: java jsp servlets

在尝试解析我从相应的jsp中提取的String参数并将它们变成一个整数和一个浮点数之后,我一直遇到同样的错误。在我的Web应用程序中,我有java类,其中我试图解析的值是一个整数和一个浮点数,但我似乎无法找到解析它们的方法并让我的servlet按照我的方式工作# 39;我喜欢它。这是我在servlet中使用的代码:

        //get Parameter from newStudentPage.jsp
        String id = request.getParameter("stuId");
        String fName = request.getParameter("fName");
        String lName = request.getParameter("lName");
        String street = request.getParameter("street");
        String city = request.getParameter("city");
        String state = request.getParameter("state");
        String zip = request.getParameter("zip");
        String email = request.getParameter("email");
        String gpa = request.getParameter("gpa"); 

        int Zip = Integer.valueOf(zip);
        float GPA = Float.parseFloat(gpa);

        //Use RequestDispatcher to forward to jsp's
        RequestDispatcher rd = request.getRequestDispatcher("newStudentLoginPage.jsp");
        RequestDispatcher rd2 = request.getRequestDispatcher("newStudentSectionAddDrop.jsp");

        //Create Student object and fill with paramater data
        Student s2 = new Student();
        s2.setstuId(id);
        s2.setfName(fName);
        s2.setlName(lName);
        s2.setstreet(street);
        s2.setcity(city);
        s2.setstate(state);
        s2.setzip(Zip);
        s2.setemail(email);
        s2.setgpa(GPA);

        //Put Student object into Session
        HttpSession ses2 = request.getSession();
        ses2.setAttribute("s2", s2);           
        if(id.equals("")||fName.equals("")||lName.equals("")||street.equals("")||city.equals("")||state.equals("")||zip.equals("")||email.equals("")||gpa.equals("")){
            rd.forward(request, response);
        }else{
            rd2.forward(request, response);
        }

任何人都可以对我做错的事情提供一些见解吗?

2 个答案:

答案 0 :(得分:2)

这些行中的一个或全部都可能导致异常:

int Zip = Integer.valueOf(zip);
float GPA = Float.parseFloat(gpa);

您需要检查String zip或gpa是否始终可以转换为数字。如果用户没有输入任何内容,例如""" "non-number,如七七七,该怎么办?这些条件将导致NumberFormatException

答案 1 :(得分:2)

您应该捕获异常并执行某些操作,即提供默认值,要求用户输入有效值等等。

    Float floatGpa = null;
    try {
        floatGpa = Float.parseFloat(gpa);
    } catch (NumberFormatException e) {
        //do something
    }