2012-05-17 15 views
1

나는 변환 프로그램에 대한 다음과 같은 코드가 있습니다변수가 초기화되지 않았을 수 있습니까?

그것은 말한다
private void convertButtonActionPerformed(java.awt.event.ActionEvent evt) { 

    int type, value; 
    double conversion; 
    String output; 

    type = Integer.parseInt(conversionchoiceInput.getText()); 
    value = Integer.parseInt(valueInput.getText()); 

    if (type == 1) 
    { 
    conversion = inchesToCentimetres(value); 
    output = value + " inches = " + Math.round(conversion) + " centimetres"; 
    } 
    else if (type == 2) 
    { 

    } 
    else if (type == 3) 
    { 

    } 
    else if (type == 4) 
    { 

    } 
    outputLabel.setText(output); 
} 

"변수 출력이 initiaized되지 않았"나는 이미이있을 때?

감사합니다.

+0

'String output;을 쓸 때 당신은 _declaring_'output'을합니다. 'String output = "";'(또는 임의의 값. "은 단지 예일 뿐이다)를 쓸 때, 당신은 그것을 초기화하고있다. – Tharwen

+0

일반적으로 변수 (유형, 값)의 선언과 초기화를 분리하는 것은 좋지 않습니다. 가능한 경우 초기화시이를 선언하십시오. 필요할 경우에만 분할하십시오 (예 : try/catch 블록 이전). –

답변

4

문제는 프로그램 실행 경로에 관계없이 output을 초기화해야한다는 것입니다. if 경로에서만 초기화됩니다. 따라서 시작시 빈 문자열 등의 기본값을 지정하거나 모든 분기에서 설정해야합니다.

if (type == 1) 
{ 
    conversion = inchesToCentimetres(value); 
    output = value + " inches = " + Math.round(conversion) + " centimetres"; 
} 
else if (type == 2) 
{ 
    output = ""; 
} 
else if (type == 3) 
{ 
    output = ""; 
} 
else if (type == 4) 
{ 
    output = ""; 
} 

String output = ""; 

또는

은 물론, 첫 번째 옵션은 최고입니다.

+0

또한 가장 일반적인 값으로 초기화 할 수 있습니다. if 문에서 가장 일반적인 옵션을 확인하지 않고 다른 옵션을 선택하면됩니다. –

0

유형이! = 1이면 출력이 초기화되지 않습니다. 그리고 if 브랜치 (1, 2, 3, 4) 각각에 값을 출력하더라도, < 1 또는> 4와 같이 값이없는 것처럼 출력이 초기화되지 않았을 수 있습니다.

0

방금 ​​변수를 초기화 한 것과 다른 변수가 선언되었습니다.

관련 문제