我有一个登录页面这个页面提交给一个servlet处理public class Entry extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String[] id=request.getParameterValues("id");
String[] name=request.getParameterValues("name");
        String[] cid=request.getParameterValues("cid");
        String[] cname=request.getParameterValues("cname");
        String[] time=request.getParameterValues("time");
String[] ps=request.getParameterValues("ps");
String[]  es=request.getParameterValues("es");//这个是得到每一列的值数组.
int[] a=new int[ps.length];//因为数据库这2个字段是int类型的
int[] b=new int[es.length];//这个是把得到的字符型数组转为整型数组
                 for(int u=0;u<ps.length;u++){
a[u]=Integer.parseInt(ps[u]);
b[u]=Integer.parseInt(es[u]);
System.out.println(a[u]);
System.out.println(b[u]);

}
response.setContentType("text/html");
response.setCharacterEncoding("gbk");
ConnSqlServer co=new ConnSqlServer();
Connection ct=co.connDb();
int i=-1;
try{
                          //遍历每一列的数组然后插入数据库
for(int y=0;i<a.length;y++){
String mid=id[y];
String mname=name[y];
String mcid=cid[y];
String mcname=cname[y];
String mtime=time[y];
int mps=a[y];
int mes=a[y];
System.out.println("1123");

i=
ct.createStatement().executeUpdate("insert grades(stuId,stuName,classId,className,semester,pscores,escores) " +
"values('"+mid+"','"+mname+"','"+mcid+"','"+mcname+"','"+mtime+"','"+mps+"','"+mes+"')");
System.out.println("dddtt");
}

}catch(Exception e){
e.printStackTrace();
}finally{
co.close();
}
if(i!=-1)
{
response.sendRedirect("http://localhost:8080/proj/sucessful.jsp");
}


}运行时它报个数据类型转换的错误.我觉得我已经把它转换了.为什么还报.
严重: Servlet.service() for servlet Entry threw exception
java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:468)
at java.lang.Integer.parseInt(Integer.java:497)
at ccsu.cxl.Entry.doPost(Entry.java:26)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)

解决方案 »

  1.   

    java.lang.NumberFormatException: For input string: ""
     应该是页面传过来空串,但空串不能转换为int
      

  2.   

    难道是我在输入的页面上.我只输入了2行记录 ,点确定时
    我用这个获得的String[] id=request.getParameterValues("id");
    String[] id只有前2个有值 后面的也有值但是是为空值保存在数组里面.
    所以转换出来问题.是这样吗.
      

  3.   

    debug单步调试看一下就行了。。
      

  4.   

    在servelet中判断下 空串 就不要parseInt 用个三目运算符
      

  5.   

    转换的时候  加上 try catch 吧。
      

  6.   

    判断了也还是报同样的错误.
    int[] a=new int[ps.length];
    int[] b=new int[es.length];

    for(int u=0;u<ps.length;u++){
    if(ps[u]!=null&&es[u]!=null){         a[u]=Integer.parseInt(ps[u]);
    b[u]=Integer.parseInt(es[u]);
    System.out.println(a[u]);
    System.out.println(b[u]);}

    }