2013-11-15 83 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,但堅持它作爲序

相關問題