Java项目中的NumberFormatException

时间:2017-02-12 14:01:13

标签: java numberformatexception

我尝试使用输入作为电话号码属性,在我之前在Oracle 10g数据库中添加的记录中检索单个患者记录的详细信息。即我希望使用手机号码获取单个记录的详细信息。属性。

但是当我点击按钮时,我得到NumberFormatException。该按钮的actionPerformed位于:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        try{  
        Connection con = null;
        Class.forName("oracle.jdbc.driver.OracleDriver");
        con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","passw");  

        String number = jTextField1.getText().trim(); /fetching the input here*/

        int phone = Integer.parseInt(number);/*converting string to integer*/


        PreparedStatement ps = con.prepareStatement("SELECT * FROM patient WHERE pphone==?");

                    ps.setInt(1,phone);

        ResultSet rs=ps.executeQuery();
                    jLabel16.setText("Fetching details, please wait");
                    jLabel2.setText(rs.getString("pid"));
                    jLabel3.setText(rs.getString("pname"));
                    jLabel4.setText(rs.getString("page"));
                    jLabel5.setText(rs.getString("psex"));
                    jLabel6.setText(rs.getString("pphone"));
                    jLabel7.setText(rs.getString("paddress"));
                    jLabel8.setText(rs.getString("pfamilymembers"));
                    jLabel16.setText("Details Fetched Successfully");
}                                        
catch(Exception e){
showMessageDialog(null, e);
} 

我尝试过之前的帖子,但是他们没有帮助。

如何避免或处理此异常?

3 个答案:

答案 0 :(得分:0)

您的输入是否有可能大于Integer.MAX_VALUE,如果是这样,您可以使用Long.parseLong("String")

答案 1 :(得分:0)

你无法避免它。

之后的最后一个代码的值很重要
int phone = Integer.parseInt(number);/*converting string to integer*/

您应该在将输入值传递到上下文之前检查/验证输入值。

int phone = -1
if (!String.isEmpty(number))
  //proceed
  try {
      phone = Integer.parseInt(number);/*converting string to integer*/
      ....
  } catch (NumberFormatException e){
    throw new Exception("Number is invalid", e);
  }
else
  throw new Exception ("Number is empty");

答案 2 :(得分:0)

代码现在成功运行,

我使用“valueOf(int)”方法将jTextField值传递给“String”变量而不是int

String number = String.valueOf(getText.jTextField1);