나의 IT일지
조건문(switch문) 본문
제어문은 흐름을 개발자가 원하는 흐름으로 변경 할 수 있는 문법으로, 조건에 따라 흐름을 반복하는 문법인 반복문과 조건에 따라 흐름을 제어하는 문법인 조건문이 제어문에 속한다.
조건문 - switch문
if문은조건에 따라 다른 블록을 실행할 때 사용하는 문법으로, 조건의 참, 거짓에 따라 다른 블록을 실행하는 문법
이다. 그렇다면 조건문 중에 switch문은 어떤 조건으로 블록을 구분할까?
switch문은 변수나 수식이 어떤 값을 갖느냐에 따라 실행문이 선택된다. 즉 switch문은 변수의 값이나 수식(연산자로 만든 식)의 값을 조건으로 한다.
구조식 | 순서도 |
switch(변수 혹은 수식){ case 값1: 변수or수식==값1일때 실행할 명령1; break; case 값2: 변수or수식==값2일 때 실행할 명령2; break; ... default: 모든 case 의 값이 아닐 경우 실행할 명령; } |
이때 변수나 수식의 결과값은 항상 정수이나 문자, 문자열이어야 한다. case에는 정수,문자,문자열밖에 올 수 없어서, 변수에 저장된 값이나 수식의 결과값은 무조건 정수,문자,문자열이여야 한다.
switch은 괄호 안의 변수,수식 값과 동일한 값을 갖는 case로 가서 블록을 실행하며 변수,수식 값이 없을 경우 default의 블록을 실행한다.
package pack0321;
import java.util.Scanner;
public class Code2 {
public static void main(String[] args) {
Scanner point = new Scanner(System.in);
System.out.print("점수 대 입력:");
int grade = point.nextInt();
switch (grade/10) {
case 10:
case 9:
System.out.println("Grade A");
break;
case 8:
System.out.println("Grade B");
break;
case 7:
System.out.println("Grade C");
break;
case 6:
System.out.println("Grade D");
break;
default :
System.out.println("Grade F");
break;
}
}
}
만약, 점수입력으로 95를 입력하게 되면, switch문에 사용되는 수식의 결과값은 9.5가 되며, 변수a는 정수형 변수이기에 9로 저장된다. 즉, 조건이 "9"인 case의 명령문을 실행이 된다.
위의 코드를 보면, "10"인 case에 실행할 명령문이 적혀있지 않는것을 확인할 수 있다. 그렇다면 점수입력을 100으로 하면, 아무것도 출력이 안 되는 것인가? 한번 확인해 보자.
결과를 보면 "Grade A"를 출력하는 것을 확인할 수 있다. 프로그래밍의 실행순서는 기본적으로, 위에서 아래이다. 즉, "10"인 case에서 실행이 시작 된것이며, 아래로 실행이 되다가 break문에서 멈춘 것이다. 그래서 case9의 printf("Grade A")를 통해 "Grade A"가 출력된 것이다.
즉, break의 역할은 실행을 중단하는 것이다. switch문이 실행이 되면, 결과값과 case 값이 같은 곳에서 명령실행이 시작되며, break 있는 곳까지 명령이 진행된다. 만약 break가 없다면, 명령 실행이 시작하고, 소스코드의 명령어가 없을 때까지 명령실행이 된다.
package pack0321;
import java.util.Scanner;
public class Code2 {
public static void main(String[] args) {
Scanner point = new Scanner(System.in);
System.out.print("점수 입력:");
int grade = point.nextInt();
switch (grade/10) {
case 10:
case 9:
System.out.println("Grade A");
case 8:
System.out.println("Grade B");
case 7:
System.out.println("Grade C");
case 6:
System.out.println("Grade D");
default :
System.out.println("Grade F");
}
}
}
이처럼 break문이 없으면, 모든 명령어가 명령을 실행하는 것을 볼 수 있다. 즉, case의 명령어를 멈추기 위해서는 break문을 사용해야 한다.
'프로그래밍 언어 > Java' 카테고리의 다른 글
반복문(while문) (0) | 2023.03.24 |
---|---|
반복문(for문) (0) | 2023.03.23 |
조건문(if문) (0) | 2023.03.21 |
연산자(삼항, 대입) (1) | 2023.03.18 |
연산자 (논리, 비트) (1) | 2023.03.17 |