JAVA

자바 기초 다지기(#12)

정숙씨의 쏠쏠한 코딩 2020. 10. 26. 23:55

-Swtich문-

if문은 어떤 조건의 판정 결과에 따라서 프로그램의 흐름을 두 가지로 분기하는 거였다면, Switch문은 한번에 여러개의 분기를 구성할수있다.

리스트 3-15 입력된 값의 따라서 가위바위보를 표시하는 프로그램

class FingerFlashing1{
  public static void main(String args[]){
    Scanner stdIn = new Scanner(System.in);

     System.out.println("손을 선택 하시오 (0-가위/1-바위/2-보)");
     int hand = stdIn.nextInt();
If(hand ==0){
   System.out.println("가위");
}else if (hand == 1){
   System.out.println("바위");
}else if(hand == 2)
   System.out.println("보");
 }
}

if문으로도 효과적으로 구현할수있으나 동일한 함수를 여러번 호출하기 때문에 작업간 에러가 발생할수도있다. 한번에 구현하기 위해 switch 문을 사용할경우 어떻게 변동되는지 확인하자.

-리스트 3-16 switch 문을 이용한 가위바위보 구현-

class FingerFlashing2{
  public static void main(String args[]) {
    Scanner stdIn = new Scanner(System.in);

   System.out.println("손을 선택 하시오(0-가위/1-바위/2-보)");
   int hand = stdIn.nextInt(); // 흐름의 입력을 선택

   switch(hand){ // hand의 입력된 숫자값 반영
   case 0: // 0이 입력될 경우 가위 출력
    System.out.println("가위");
    break; // 입력된 값을 출력 했을경우 다음 구문을 진행하지 않고 멈추게된다.
   case 1: // 1이 입력 될 경우 바위 출력
    System.out.println("바위");
    break;
  case 2: // 2가 입력 될 경우 보 출력
    System.out.println("보");
    break;
}

한가지 호출 함수를 이용하여 간결하게 구현이 가능하다, Switch문은 어떤 식을 평가한 값에 따라서 프로그램의 흐름을 복수로 분기시키는 문이다. 호출명 대로 스위치 같은 존재이다.

주석에 작성 된 것 처럼 입력 된 숫자로 프로그램의 이동에 대한 위치가 결정되는데 해당 부분을 레이블이라고 한다, (서로 다른 레이블이 같은 값을 받는것은 허용하지 않는다.)

-break 문-

switch 문에 지정된 레이블의 값이 출력 되었을경우 break 문을 만날경우 다음 값을 진행하지 않고 그자리에서 멈추게된다.

프로그램의 흐름이 멈춘다고 보면 된다.

-default 레이블-

Class SwitchBreak{
   public static void main(String args[]){
     Scanner stdIn = new Scanner(System.in)

    System.out.println("정수를 입력 하시오 : ");
    int n = stdIn.nextInt();

    Swtich(n){
    case 0 :
     System.out.println("A");
     System.out.println("B");
     break;
    case 1 :
     System.out.println("C");
     System.out.println("D");
     break;
    case 2 : // break문이 없기 때문에 자연스럽게 case 3 레이블 결과값이 나타난다.
    case 3:
     System.out.println("E");
      break;
    default: //0123 을 입력하지 않고 다른 숫자값을 입력 했을때 default 레이블로 넘어간다.
     System.out.println("F");
     break;
 }
 System.out.println();
}

입력값이 case 레이블의 흐름에 맞지 않는 값이 나왔을경우 해당 값은 자연스럽게 switch 문에서는 default 레이블로 이동하게된다.

-선택문-

if와 switch문은 프로그램의 흐름을 분기시키는 공통점이 있기때문에 두문을 모아서 소스를 구현할경우 선택문 (selection statement)라고 한다.

-예시-

if (a==1)
 c = 10;
else if( a==2)
 c =20;
else if( a == 3)
 c = 30;
else if (b == 4)
 c = 80;
-왼쪽의 if문을 수정한 switch문-
Switch (a) {
 case 1: 
  c == 10;
  break;
 case 2:
  c == 20;
   break;
 case 3:
  c == 30;
 default
  if (b==4):c=80; // b의 값이 4일 경우에만 c = 80 을 대입한다.
   break;