2014-08-29 8 views
1

난 당신이자바 JTextField를 빈 문자열 오류

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "" 

나는 내가 내 번호를 입력하지 않고 계산하지 않기 때문에이 오류가 계속 왜 확실하지 오전 아래에 볼 수 빈 문자열에 대한 오류가 계속 JTextField. 아래는 계산 버튼에 사용하는 코드입니다. 상당히 간단합니다.

private void ButtonCalculateActionPerformed(java.awt.event.ActionEvent evt) {             
     Height = Integer.parseInt(this.TextFieldHeight.getText()); 
     Weight = Integer.parseInt(this.TextFieldWeight.getText()); 
     BMI = Integer.parseInt(this.TextFieldBMI.getText()); 
     answer = Height + Weight; 
     this.TextFieldBMI.setText("The answer is: " + answer); 
    }            

은 텍스트 필드 중 하나는 구문 분석 전에 empty 검사를 추가해야 "" 비어있는 동안

//variables 
    static int Height; 
    static int Weight; 
    static int BMI; 
    static int answer; 
+0

그게 전부 사실이 아니다, 나는 그 때 내가 계산하기 버튼을 눌렀을하고있는 JTextfields 내부에 숫자를 입력하고 난 오류가 위에서 언급 얻을. – ssj3goku878

+1

추가 도움을 청하기 위해 [Minimal, Complete, Verifiable Example] (http://stackoverflow.com/help/mcve)을 게시하십시오. 당신이 보여주는 것은 당신이 당신의 문제를 푸는데 도움이 될 정도로 선명한 그림을 그리지 않습니다. –

+1

this.TextFieldHeight.getText()는 저의 머리를 회전시킵니다. TextFieldHeight, TextFieldWeight 및 TextFieldBMI가 포함 된 클래스 계층 구조에 있으며 각 단계에서 재정의되는 정적 getText 메서드를 사용합니까? – Deltharis

답변

1

죄송합니다. 대답이 없기 때문에 BMI 변수를 추가했습니다. 응답은 .getText()이 아닌 TextFieldBMI으로 출력되어 항상 비어 있었기 때문입니다. 문제 해결됨!

+2

간단합니다. 누군가 그것을 발견 했어야합니다. 그러나 나중에 참조 할 때 질문을 게시 할 때 문제점을 보여주는 짧은 실행 가능한 예제를 포함하십시오 (복사 - 붙여 넣기 - 컴파일 실행 가능) –

+0

모든 향후 질문에 대해 수행 할 것입니다. 감사합니다. :) – ssj3goku878

1

당신은 버튼을 클릭하는 정의 된 변수입니다.

 if(!TextFieldHeight.getText().trim().equals("") && 
     !TextFieldWeight.getText().trim().equals("") && 
     !TextFieldBMI.getText().trim().equals("")){ 
     //Parse string 
    } 

참고 : 명명 규칙에 따라 변수 이름은 작은 것으로 시작해야합니다.

integer로 구문 분석 할 수없는 일부 문자열을 입력 할 때 예외가 발생할 수도 있습니다.

+0

_ "숫자를 입력하지 않고 계산하지 않으므로이 오류가 계속 발생하는 이유는 확실하지 않습니다."_ OP의 진술이 사실이라면 이것이 어떻게 달라질 지 실제로 보지 마십시오. 불필요한 문자를 입력하거나 참조하는 문제 일 수 있습니다. MCVE 없이는 알기 힘듭니다. –

+0

이것은 좋은 해결책이지만 문자열이 비어있는 경우에만 작동합니다. NumberFormatExceptions은 여러 가지 이유로 발생할 수 있습니다. 문자열에는 문자가 포함됩니다. – Gumbo

1

TextField가 비어있는 경우 (getText()가 ""를 반환하는 경우) Integer 클래스가 아무 것도 구문 분석하지 못하고 대신 예외를 throw합니다. 구문 분석 코드에 try/catch을 입력해야합니다.

try{ 
    Height = Integer.parseInt(this.TextFieldHeight.getText()); 
    Weight = Integer.parseInt(this.TextFieldWeight.getText()); 
    BMI = Integer.parseInt(this.TextFieldBMI.getText()); 
    answer = Height + Weight; 
    this.TextFieldBMI.setText("The answer is: " + answer); 
catch(NumberFormatEeceptinon e){ 
    //So something when paring failed, e.g. show a error message 
} 
+0

예외 상황을 해결하고 전반적인 우수 사례이지만, – Deltharis

+0

이되어야 할 때 필드가 비어있는 실제 문제를 해결하지 못했습니다. 물론 OP가 게시 한 것부터 이것이 현재 할 수있는 유일한 방법입니다. . 문자열이 비어있는 문제는 다른 곳에서 발생합니다. – Gumbo

+0

@Deltharis 미안하지만 더 신중하게 읽어야합니다./ – Gumbo

1

답변을 인쇄 할 jButton을 누르면 TextFieldBMI가 비어 있다고 생각합니다! 아래 코드에있는 라인을 주석 처리해야합니다. 새로운 BMI 값을 입력하려면 다른 텍스트 필드를 만들어야하고 대답은 다른 텍스트 필드도 만들어야합니다. 원래 코드로 TextFieldBMI를 비워두고 버튼을 누르면 같은 오류가 다시 나타납니다.

enter image description here 당신의 코드를 댓글 그것은 노력하고 있습니다;

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           

     Height = Integer.parseInt(this.TextFieldHeight.getText()); 
     Weight = Integer.parseInt(this.TextFieldWeight.getText()); 
//  BMI = Integer.parseInt(this.TextFieldBMI.getText()); 
     answer = Height + Weight; 
     this.TextFieldBMI.setText("The answer is: " + answer); 



    } 

당신이 BMI를 계산하려면;

enter image description here

귀하의 필드이어야한다;

static int Height; 
    static int Weight; 
    static double BMI; 
    static int answer; 

귀하의 버튼 동작이되어야한다

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           

     Height = Integer.parseInt(this.TextFieldHeight.getText()); 
     Weight = Integer.parseInt(this.TextFieldWeight.getText()); 
     BMI = getBMI(Weight, Height); 
     this.TextFieldBMI.setText("BMI is " + BMI); 


    } 

BMI 계산 방법이되어야한다

private static double getBMI(int weightInKg, int heightInCm) { 

    return weightInKg/Math.pow(((double) heightInCm/100), 2); 
} 
관련 문제