2013-11-15 3 views
1

최대 절전 모드를 사용하여 Java Swing 응용 프로그램에서 SAVE 프로세스를 실행하려고했습니다. 하지만 매번 다음 예외가 발생합니다.java.lang.NumberFormatException : 입력 문자열 : "Male"

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은 사용자의 성별을 선택하는 데 사용되며 그것은 기준 검색을 사용하여 성별 테이블의 값으로로드됩니다.

jComboBox에서 문제가 발생했다고 생각합니다. 여기의 도움은 정말로 감사 할 것입니다. 미리 감사드립니다.

답변

3

String 값 "Male"을 정수로 구문 분석하려고합니다. 확실히 유효한 번호가 아니므로 NumberFormatException입니다.

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

로드 메소드에서 직접 String을 사용할 수 있습니다. gen 기본 키 (당신의 Gender 클래스의 식별자)가 아니면 심지어는 문제가 해결되지 것입니다하지만

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

. id (기본 키)을 load() method의 두 번째 매개 변수로 지정해야합니다.

0

사용자가 입력 한 값 (예 : 사용자 입력)을 확인해야하며 코드는 이와 같아야합니다. jcombobox에서 사용자가 제공 한 대답은 jcom입니다.

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

문제가 순서

로 당신이 당신의 POJO에 열거 객체를 사용하는 @Enumerated 주석을 사용하여 최대 절전 모드로 열거를 지속하지만, 지속에 대한 경우
관련 문제