2014-07-05 2 views
-1

나는 동료 학생에게이 질문을하고 대답 할 방법이 없다.Java if 문에서 변수 선언하기

다음 코드는 정상적으로 작동합니다.

int x = 40; 
    int y = 35; 
    if (x > y) 
    { 
     int ans = x + y; 
    } 

그러나 아래 코드는 변수 선언이 허용되지 않는 오류를 나타냅니다. 왜 거기서 허용되지 않습니까? 이 중요한 경우 우리는 넷빈즈 8.0 베타를 사용하는

int x = 40; 
    int y = 35; 
    if (x > y) 
     int ans = x + y; 

: - 잘못된 트리 형식 Uncompilable 소스 코드 : NetBeans는 다음과 같은 예외가 발생합니다.

+0

_이 작업은 정교합니다 –

+0

NetBeans가 최상위 코드를 올바르게 컴파일하고 맨 아래 코드는 변수 선언이 허용되지 않는다고 알려줍니다. 왜 그것이 허용되지 않는지 궁금합니다. 빠른 답변 감사합니다! – user3806867

+0

제공하신 정보로는 어떻게 작동하지 않을지 확실하지 않습니다. 둘 다 컴파일됩니다 –

답변

1

변수를 범위 지정하면 해당 범위에서만 사용할 수 있습니다.

if (stuff) { 
    int i; 
    // i available here 
} 
// i not available here 

첫 번째 유형의 컴파일러는 나중에 변수를 사용할 지 여부를 알지 못합니다. 해당 블록에 변수를 만드는 데 문제가 있다고 생각하지 않습니다.

두 번째 형식에서는 {} 블록을 만들지 않았기 때문에 컴파일러에서 단 하나의 명령문 만 사용한다는 것을 알고 있습니다. 생성 한 변수는 확실히 사용되지 않으므로 컴파일러는 사용자가 정의한 변수를 결코 사용할 수 없다는 것을 경고합니다.

+0

블록에 없기 때문에 자동으로 범위를 벗어나므로 쓸모가 없습니다. 지금은 이해. – user3806867

1

작동 여부에 대한 질문이 아니라 구문 오류입니다. 블록 외부에서 변수 선언을 할 수 없습니다.

왜 두 번째 패턴을 원하십니까? 누가 ans을 사용할 예정입니까?

+2

"* 블록 밖 *"정의 –