2014-09-25 12 views
1

자바를 배우기 위해 기본 계산기를 만들려고하는데 스위치 문에서 '이 로컬 변수가 초기화되지 않았을 수 있습니다.'라는 말을 계속합니다. 여기에 (이 스위치 문에 전달이 후) 코드char -이 로컬 변수가 초기화되지 않았을 수 있습니다.

char operator; 

    System.out.println("Enter First number"); 
    firstNumber = scan.nextDouble(); 

    System.out.println("Enter Second Number"); 
    secondNumber = scan.nextDouble(); 

    switch(operator) { 
    case '+': 
     answer = firstNumber + secondNumber; 
     System.out.println("Result = "+ answer); 
     break; 

의 세그먼트 내 프로그램을 컴파일 할 때

그것은 나를 스위치 (운영자)에서 작업자가되지 않았 음을 알 수있다 '이 지역 변수가 초기화되지 않았을 수 있습니다'라고 '연산자'아래에 빨간 선이 표시됩니다.

은 내가 쓸 것을 저에게 말했다 : 작동하지 않았다

char operator = 0; 

그래서 난

char operator = null; 

을 시도하고 너무 그것은 자동으로

default: 
     System.out.println("Syntax Error"); 
에 실행 작동하지 않았다 케이스가 제대로 완료되지 않은 경우 내 기본값 인

입니다. Operator가 무엇인지 정의했기 때문에 이것까지 실행됩니다.

이 문제를 해결하려면 어떻게해야합니까?

PS이 지저분한 게시물 인 경우 더 이상 정보가 필요하면 그냥 물어, (그것은에 유래에 처음입니다) 죄송

이 case.char 연산자에서 다음 코드를 사용하여 사용

전에 초기화되어야한다

+0

샘플 입력 및 출력은 무엇입니까? 당신은 어떻게 사업자에게 가치를 부여하고 있습니까? – zerocool

+2

당신은 결코'operator'에 아무 것도 지정하지 않습니다, 그러나 당신은 그 프로그램이 뭔가 유용한 것을하기를 기대하고 있습니까? – ajb

+0

'0'은 정수가 아니므로'char operator = 0' 예는 실패합니다. 'char operator = '0'; '으로 초기화 할 수는 있지만, switch 문에서'+'와 일치하는 것을 기대하는 이유가 무엇이겠습니까? 연산자 변수의 값은 어디에서 올 것이라고 기대합니까? – scrappedcola

답변

1
System.out.println("choose operator"); 
operator c = scan.next().charAt(0); 
0

switch 문 안에는 +에 대해서만 대문자가 있으므로 연산자를 0 또는 null로 초기화하면 default 경우와 일치합니다. 이 행해져 Yout은이 CALC 그래서 널 (null)로 운영자를 초기화 할 몇 가지 작업을 선택하려면, 질문, operator = '+'; 그러나 : 더 나은 당신이 instace 만 opperation "+"하고 싶은 경우 +

0

으로 초기화, 그래서와 연산자를 초기화 콘솔에서 작동하기 :

System.out.println("choose operator"); 
operator = scan.next().charAt(0); 

이제 스위치 케이스에 문제없이 작동자가 사용할 수 있습니다.
채팅에 case not 문을 입력하면 기본 경우에도 메시지를 보냅니다.

관련 문제