无法将String转换为Integer

时间:2013-08-27 06:54:04

标签: java mysql jsp

我是初学者。我知道这是基本的。在我的项目中,我使用的是Java和MySQL工作台。我正在使用选择框从用户读取数据,该选择框来自使用ajax的数据库。 选择框的代码如下所述

<%
 String a =request.getParameter("course");
 if(a!=null)
   {
       ResultSet rs=s.selectsub(a);
       String Query="select * from  subject where course_id='"+a+"'";
 %>
 <select name="subject" id="subject">
   <option>Select Subject</option>
   <%
    while(rs.next())
    {
    %>
    <option value="<% out.println(rs.getString("subject_id")); %>">
    <% out.println(rs.getString("subject")); %></option>
   <% } %>
  </select>
<%
}
%>

并使用post方法将主题ID传递到另一个页面并尝试使用此代码

     String subject=request.getParameter("subject");
     int subjectid=Integer.parseInt(subject);

但整数转换行无效。错误显示。错误是

org.apache.jasper.JasperException: An exception occurred processing JSP page /saveuser.jsp at line 29
26:          String email=request.getParameter("email");
27:          String designation=request.getParameter("designation");
28:          String subject=request.getParameter("subject");
29:          int subjectid=Integer.parseInt(subject);
30:          String institute=request.getParameter("institute");
31:          String inemail=request.getParameter("inemail");
32:          String uname=request.getParameter("uname");

3 个答案:

答案 0 :(得分:4)

Integer.parseInt方法将有效的整数值字符串转换为int。否则会抛出异常。因此,请确保将有效的整数值传递给它。有时字符串中的尾随空格会导致异常。因此,在输入字符串上调用trim方法以避免:

 int subjectid=Integer.parseInt(subject.trim());

还要确保主题不为空。所以这似乎更好:

 String subject=request.getParameter("subject");
 int subjectid = 0;
 if(subject !=null && !subject.isEmpty())
     subjectid=Integer.parseInt(subject.trim());

答案 1 :(得分:1)

您似乎在混淆数据类型,尝试将getParameter("subject")转换为整数。

也许你有一个名为"subject_id"的参数,这可以吗?

 String subject_id_string=request.getParameter("subject_id");
 int subjectid=Integer.parseInt(subject_id_string);

答案 2 :(得分:1)

使用Integer.parseInt(String)方法。

int subjectid = Integer.parseInt(subject.trim());

来自文档

  

将字符串参数解析为带符号的十进制整数。字符串中的字符必须都是十进制数字,除了第一个字符可以是ASCII减号' - '('\ u002D')表示负值或ASCII加号'+'('\ u002B')表示正值。返回结果整数值,就像参数和基数10作为parseInt(java.lang.String,int)方法的参数一样。