2014-01-15 4 views
-1

사용자가 x 및 y에 값을 입력해야하며 x가 5보다 크고 y가 0 인 경우 z는 x + y와 같아야합니다. 그러나 컴파일 할 때 z가 초기화되지 않았을 수도 있다는 오류가 발생합니다.오류의 원인 : var가 초기화되지 않았습니다.

import java.util.Scanner; 
public class add { 
    public static void main(String[] args){ 
     Scanner input = new Scanner (System.in); 
     System.out.print("Enter a value for x"); 
     int x = input.nextInt(); 

     System.out.print("\nEnter a value for y "); 
     int y = input.nextInt(); 

     int z; 

     if (x > 5){ 
      if (y == 0) 
       z = x + y; 
      System.out.println("The answer is " + z); 

     } 
     else 
      System.out.println("The answer is only" + x); 
    } 
} 
+1

간단히 :'y == 0'이 거짓이면'z'는 초기화되지 않은 상태로 남을 것입니다. –

+0

... 또는'x> 5'는 거짓입니다 –

+0

'y == 0' 일 때만'z'를 초기화합니다. 'int z = 0;처럼 더 사용하고 싶다면 초기화 할 필요가있다. –

답변

0

if 조건에 중괄호를 사용하지 않으므로 z가 초기화되지 않습니다.

이러한 종류의 문제를 해결하려면 정수 변수를 사용하여 무언가를 계산하는 경우 몇 가지 값 (여기서는 0이 가장 좋습니다)을 사용하여 초기화하십시오.

그런 다음 초기화 오류없이 코드의 아무 곳이나 해당 변수에 액세스 할 수 있습니다.

는 두 가지 방법으로

이이 문제를 제거하려면

한 가지 방법 :

단지 초기화하여 Z 변수와 같은 :

int z=0; 

두 번째 방법 : 넣어

시도 중괄호는 다음과 같은 조건 일 경우 :

if (y == 0){ 
    z = x + y; 
    System.out.println("The answer is " + z); 
} 
+0

첫 번째 방법은 훨씬 더 감사합니다. – user3196297

4

z가 초기화되지 않는 실행 경로가있다, 그러나 당신은 그것을 인쇄하려고. x5보다 큰 경우 y0이 아닌 경우 z은 초기화되지 않지만 인쇄 할 때는 z을 참조하십시오.

사용은 당신의 내면의 if 문에 대한 내부 블록을 만들 중괄호, 그래서 초기화 않다면 z에만 참조 :

if (x > 5){ 
    if (y == 0) { 
     z = x + y; 
     System.out.println("The answer is " + z); 
    } 
} 

또한, 적절한 들여 쓰기는 블록의 일부 시각적으로 무엇인지 파악하는 데 도움 게 아니에요.

1

귀하의 문에 잘못된 내용이 '가':

if (y == 0) 
    z = x + y; 

어떤 경우 Y = 0!? 이 경우 z는 초기화되지 않습니다.

중괄호를 가지고 있지 않는 한

System.out.println("The answer is " + z); 

가,은 y == 0 문에 적용되지 않습니다 다음 줄 {}.

if (x > 5) { 
    if (y == 0) { 
    z = x + y; 
    System.out.println("The answer is " + z); 
    } 
} 

참고 "{"다음에 if 문 :

당신은 아마 뭔가를 작성하는 것을 의미했다.

0

z이 무엇이든간에 이 될 것이라는 점을 컴파일러에 보장해야합니다..

선언 할 때이 값을 기본값으로 지정할 수 있습니다. 이러한 라인을 따라

예시 :

int z = 0; // just an example 
0

INT의 Z 값이없는, 그 다음 줄 하단 코드 시도 0 또는 input.nextInt(); int z = 0; 또는 int z = input.nextInt();

관련 문제