2016-08-19 2 views
0
package mmm; 
import java.util.Scanner; 
public class Hi{ 
    public static void main(String args[]){ 
     int num1, num2, result, choice; 
     Scanner abhi = new Scanner(System.in); 
     System.out.println("You Have The Following Choices:"); 
     System.out.println("1. Addition"); 
     System.out.println("2. Subtraction"); 
     System.out.println("3. Multiplication"); 
     System.out.println("4. Division "); 

     choice = abhi.nextInt(); 
     System.out.println("Enter The First Number"); 
     num1 = abhi.nextInt(); 
     System.out.println("Enter The Second Number"); 
     num2 = abhi.nextInt(); 
     switch(choice){ 
     case 1: 
      result = num1 + num2; 
     break; 
     case 2: 
      result = num1 - num2; 
     break; 
     case 3: 
      result = num1 * num2; 
     break; 
     case 4: 
      result = num1/num2; 
     break; 
     default: 
      System.out.println("Error"); 


     } 
     System.out.println("The Result Is "+result); 



    } 
} 

이는 이 초기화되지 않았습니다. 반면 나는 그것을 초기화했다. 어디서 기본적으로 잘못 되었습니까? 변수형을 선언하고 모든 것을 할 수있었습니다. 나는 멍청한 놈이야. 그래서 바보 같은 질문과 질문을 용서해. 도움이 될 것입니다.변수가 초기화되지 않았다고 말하는 이유는 무엇입니까?

+0

변수가 할당되지 않았습니까? 출력을 보여줄 수 있습니까? –

+3

'switch'가 디폴트의 경우에'System.out.println ("결과는"+ 결과 ")의'result'의 값은 무엇입니까? – bradimus

+0

로컬 변수는 기본값을 취하지 않고 기본값 인 경우 초기화하지 않습니다 –

답변

1

당신이 당신의 스위치의 기본 케이스에 갈 경우, result 변수는 아무것도받지 것이다.

스위치를 사용하기 전에 또는 default 케이스 내부에 기본값을 지정해야합니다.

+0

고마워요! 너는 나에게 하나님과 같다! – Abhishekstudent

1

로컬 변수에는 기본값이 없습니다. 변수에 액세스하려면 변수 int num1, num2, result, choice;을 하나씩 초기화해야합니다.

+1

게시 된 코드에서 @bradimus 주석에 따라 값을 할당하지 않고도'result' 만 액세스 할 수 있습니다. –

1

댓글에 의해 지적되었습니다.

가변 result은 경우에 choice1, 2, 3 또는 4이었다 취득된다. 따라서 모든 코드 경로에서 변수 result이 값에 할당됩니다.

그러나 모든 코드 경로는 System.out.println("The Result Is "+result);이됩니다.

경우 result 값을 지정하거나 선언 할 때 값으로 초기화해야합니다. . .

+0

대단히 감사합니다. 마침내 효과가있었습니다! – Abhishekstudent

0

변경 당신은 다음과 같은 주요 방법의 첫 번째 줄 : 그것을 인쇄 할 때

int num1, num2, result, choice = 0; 
관련 문제