2013-11-15 79 views
1

我一直在尝试运行与使用Hibernate的一个Java Swing应用程序一个保存过程。但是我每次都会遇到以下异常。java.lang.NumberFormatException:对于输入字符串:“男”

java.lang.NumberFormatException: For input string: "Male" 
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
at java.lang.Integer.parseInt(Integer.java:492) 
at java.lang.Integer.parseInt(Integer.java:527) 
at frames.user_info_1.saveUserDetails(user_info_1.java:258) 
at frames.user_info_1.jButton1ActionPerformed(user_info_1.java:191) 
at frames.user_info_1.access$100(user_info_1.java:17) 
at frames.user_info_1$2.actionPerformed(user_info_1.java:147) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) 
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 

这是我使用的代码(用户注册)。

public void saveUserDetails() { 
    try { 
     Transaction t = sess.beginTransaction(); 

     String fn = firstname.getText(); 
     String ln = lastname.getText(); 
     String nicno = nic.getText(); 
     String contact = contactno.getText(); 

     String gen = (String) jComboBox1.getSelectedItem(); 
     int gen1 = Integer.parseInt(gen); 

     String un = username.getText(); 
     String pw = new String(password.getPassword()); 

     User u = new User(); 
     u.setFirstname(fn); 
     u.setLastname(ln); 
     u.setNic(nicno); 
     u.setPhone(contact); 

     Gender g = (Gender) sess.load(Gender.class, gen1); 
     u.setGender(g); 

     Login login = new Login(); 
     login.setUser(u); 
     login.setUsername(un); 
     login.setPassword(pw); 

     String utype = "User"; 
     int utype1 = Integer.parseInt(utype); 

     UserType utp = (UserType) sess.load(UserType.class, utype1); 
     u.setUserType(utp); 

     sess.save(u); 
     sess.save(login); 
     t.commit(); 

     System.out.println("User Successfully Saved!"); 
    } catch (NumberFormatException e) { 
     System.out.println("Number Format Exception"); 
     e.printStackTrace(); 
    } 

jComboBox1用于选择用户的性别,并使用标准搜索将它加载到Gender表中。

我想这个问题是JComboBox中。这里的帮助将非常感激。提前致谢。

回答

3

您试图解析字符串值“男”为整数。这当然不是一个有效的数字,因此是NumberFormatException

int gen1 = Integer.parseInt(gen); // This is the problem 

您可以直接在load方法中使用String。

Gender g = (Gender) sess.load(Gender.class, gen); // Use gen instead of gen1 

虽然即使这样,也解决不了你的问题,除非gen是主键(标识为您Gender类)。您需要将id(主键)作为load() method的第二个参数。

0

您应该检查用户输入的值,假设是男性(即用户输入),代码应该是这样的。用户在jcombobox中给出的答案是jcom。

if(jcom.equals("Male")) 
      gen=1; 
else 
      gen=0; 
1

如果你的问题是关于坚持和Hibernate枚举可以使用@Enumerated注释使用枚举对象在你的POJO,但坚持它作为序

相关问题