2016-09-12 3 views
1

런타임 중에 NumberFormatException 오류가 발생합니다. IF 문을 사용하여 JTextField이 비어 있는지 확인하는 경우 오류가 발생합니다. 이JTextField가 비어 있는지 확인하는 동안 NumberFormatException 오류가 발생했습니다.

String.valueOf() 

같은 뭔가

Integer.toString() 

아니면 그냥 문자열로 캐스팅없이 텍스트 영역의 정수를 추가 할 수 있습니다 :

private void btnAddNumberMouseClicked(java.awt.event.MouseEvent evt) {           
    numberArray.add(Integer.parseInt(txtNumber.getText())); 
    if(!(txtNumber.getText().equals(""))){ 
     scoresList.setText(""); 
     for (int i = 0; i < numberArray.size(); i++) { 
      scoresList.append(Integer.toString(numberArray.get(i)) + "\n"); 
     } 
    } 
    txtNumber.setText(""); 
+0

첫 번째 줄은 동일한 값을 파싱 한 다음 ' ""'과 같은지 테스트합니다. 거기서 명령을 생각해보십시오. –

+0

FOR 루프 바로 위의 IF 문에 값을 파싱 한 선을 배치했는데 모든 것이 완벽하게 작동합니다. 고맙습니다 @ 엘리엇 프리쉬 :) –

+0

@MosDef 답변을 추가했습니다. stacktrace를 추가하고 내 솔루션이 작동하는지 알려주십시오. – xenteros

답변

0

이를 변경할 수 있습니다. 또한

.isEmpty() 대신 .equals()

0

오류가 다음 줄에의 방법을 사용하려고 : 사용자가 추가 한 경우

numberArray.add(Integer.parseInt(txtNumber.getText())); 

이 코드를 응답하는 것이 쉬울 것을 stacktrace는 수신 한 오류 코드입니다. 다음과 유사합니다.

Exception in thread "main" java.lang.NumberFormatException: For input string: "6 " 
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
at java.lang.Integer.parseInt(Integer.java:580) 
at java.lang.Integer.parseInt(Integer.java:615) 

이 경우 스택 추적의 중요한 부분은 첫 번째 줄입니다. 그것은 입력으로 인해 문제가 발생했음을 나타냅니다. stacktrace의 나머지 부분은 예외가 발생하게 된 원인을 정확히 말합니다.

stacktrace로 질문을 업데이트하면 귀하의 질문에 완전히 답변 드리겠습니다. 자, 도움이 될만한 것이 무엇인지 생각해보십시오.

귀하의 문제는 세 가지 상황에 의해 발생 될 수 있습니다

  1. 당신은 구문 분석하려는 null,
  2. 귀하의 String 당신이 참조하거나 비어하지 않는 흰색 문자로 리드 또는 다음에,
  3. String은 파싱 할 수 없습니다.

그렇지 않으면 스택 추적에서 문제를 확인할 수 있기 때문에 두 번째 옵션이라고 생각합니다.

해결책은 될 수 있습니다

여전히 예외가 발생하는 경우
numberArray.add(Integer.parseInt(
    (txtNumber.getText().trim().equals("") ? 
     "0" 
    : 
     txtNumber.getText().trim() 
)); 

나에게 코멘트를 제공하고, 스택 트레이스와 질문을 업데이트하십시오.

관련 문제