java - 如何在Java中调试 "java.lang.NumberFormatException: For input string: X"?

标签 java servlets

我正在尝试运行一个程序。我对 Java 真的很陌生。当我运行程序时,出现以下异常:

Description: The server encountered an internal error () that prevented it from fulfilling this request.

Exception: java.lang.NumberFormatException: For input string: ""
    java.lang.NumberFormatException.forInputString(Unknown Source)
    java.lang.Integer.parseInt(Unknown Source)
    java.lang.Integer.parseInt(Unknown Source)
    UpdateSearchRecord.doPost(UpdateSearchRecord.java:56)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717

这是我的代码供您引用:

import java.io.IOException;`
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
//import java.sql.ResultSet;
//import java.sql.ResultSetMetaData;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class UpdateSearchRecord
 */
public class UpdateSearchRecord extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public UpdateSearchRecord() {
        super();
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        String uname = request.getParameter("uname");
        String pwd = request.getParameter("pwd");
        String confo = request.getParameter("confo");
        String name = request.getParameter("name");
        String program = request.getParameter("program");
        String country = request.getParameter("country");
        String city = request.getParameter("city");
        String state = request.getParameter("state");
        int pin = Integer.parseInt(request.getParameter("pin"));
        int contact = Integer.parseInt(request.getParameter("contact"));
        String address = request.getParameter("address");
        String idd = request.getParameter("id");
        int id = Integer.parseInt(idd);

        int confor = 0;


        if(uname.equals("") 
            || pwd.equals("") 
            || confo.equals("") 
            || name.equals("") 
            || program.equals("") 
            || country.equals("") 
            || city.equals("") 
            || state.equals("") 
            || address.equals("")){

            out.println("Please insert valid data");
            out.println("<input type=\"text\" value=\"confo\" " + "name=\"confor\">");
            RequestDispatcher rd = request.getRequestDispatcher("UpdateRecord");
            rd.forward(request, response);

        } else {
            confor=Integer.parseInt(confo);
            try {
                Class.forName("oracle.jdbc.driver.OracleDriver");
                Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","sayam");

                PreparedStatement ps=con.prepareStatement(
"UPDATE SP SET uname=?,pwd=?, confo=?,name=?,program=?, country=?,city=?,state=?,pin=?,contact=?,address=? where id=? ");

                ps.setInt(12,id);
                ps.setString(1,uname); 
                ps.setString(2,pwd);
                ps.setInt(3,confor);
                ps.setString(4,name);
                ps.setString(5,program);
                ps.setString(6,country);
                ps.setString(7,city);
                ps.setString(8,state);
                ps.setInt(9,pin);
                ps.setInt(10,contact);
                ps.setString(11,address);
                //ps.setInt(12,id);

                int i=ps.executeUpdate();
                if(i > 0) {
                    out.print("Record successfully Updated");
                }
            } catch (Exception e) {
                System.out.println(e);
            }
            out.close();
        }  
    }
}

最佳答案

在使用parseInt()函数之前需要检查字符串是否不为空。例如

if(request.getParameter("pin")!=null && !request.getParameter("pin").equals("")){
    int pin=Integer.parseInt(request.getParameter("pin"));
}

关于java - 如何在Java中调试 "java.lang.NumberFormatException: For input string: X"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29889821/

相关文章:

java - 如何从Java代码调用couchDB View ?

java - 应用程序从后台重新启动主要 Activity ,而不是恢复之前的状态

java - 上传文件到网络服务器java FileUpload

java - 是否有关于 servlet 的 session 完整性的正式定义?

java - 如何为 Java Web 应用程序配置路由

java - 最后输入的 HashMap 键是为 map 中的每个元素设置的

java - 使用 "wrap"函数创建时出现 Spring RSocketRequester 问题

java - web.xml中url-pattern有什么意义,servlet如何配置?

java - 在 DispatcherServlet 中未找到名称为 'dispatcher' 的 URI [/ecommerce.mv​​c/] 的 HTTP 请求的映射

java - 从 Maven 存储库部署到 destr 服务器