728x90
반응형
안녕하세요~ 자바 프로그래밍에서 제어문 switch문에 대해 이야기해보겠습니다. switch문은 조건 분기문으로, if-else문과 비슷하지만, 여러 개의 조건을 한번에 처리할 수 있습니다. switch문은 변수나 상수의 값에 따라서 실행할 코드 블록을 선택합니다. 이를 통해 코드의 가독성을 높일 수 있고, 중첩된 if-else문의 복잡도를 줄일 수 있습니다. switch문을 사용하여 자바 프로그래밍을 보다 효율적으로 작성해보세요!
switch문
// switch 문
// 분기를 위해서 사용이 되는 java의 분기문법
// - if문과는 다르게 조건식이 아닌 정수 상수의 값을 기준으로 분기
// 사용법
/*
switch( 정수형 변수 / 정수의 값을 반환하는 식 ) {
case 상수값1 :
상수값1에 해당되는 값이 들어온 경우 실행문;
break;
case 상수값2 :
상수값2에 해당되는 값이 들어온 경우 실행문;
break;
...
default :
모든 상수값에 해당되지 않는 경우 실행문;
break;
}
*/
int menu = 1;
// switch 구문의 실행과정
// - 입력된 정수의 값을 내부에 정의된 각 case 상수와 비교
// - 위에서부터 아래로 순차적으로 진행
// - 특정 case 의 상수와 동일한 값인 경우 해당 case 구문 내부의 실행문이 실행
// - break 키워드를 만날때 까지 실행
switch( menu ) {
case 1: // if( menu == 1 )
System.out.println("짜장면을 주문했습니다.");
break;
case 2: // else if( menu == 2 )
System.out.println("짬뽕을 주문했습니다.");
break;
case 3: // else if( menu == 3 )
System.out.println("볶음밥을 주문했습니다.");
break;
default :
System.out.println("잘못된 메뉴번호입니다.");
}
키보드 입력 switch 사용하여 출력하기
import java.util.Scanner;
public class Control_Statement_SWITCH_02 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 사용자에게 월에 해당되는 정보를 입력받으세요.
// 입력받은 월의 일수를 출력하세요.
// EX) 1 ~ 12 사이의 정수를 입력하세요 : 5
// 5월 달은 '31'일 까지 있습니다.
// 1. 입력
// - 변수 선언
int month;
// - 입력 과정 수행
System.out.print("1 ~ 12 사이의 정수를 입력하세요 : ");
month = in.nextInt();
// 2. 처리
// - 변수 선언
int day;
// - 처리 과정 수행
switch( month ) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
day = 31; break;
case 2:
day = 28; break;
case 4: case 6: case 9: case 11:
day = 30; break;
default:
day = -1;
}
// 3. 출력
if( day != -1 )
System.out.printf("%d월 달은 '%d'일 까지 있습니다.\n", month, day);
else
System.out.printf("1 ~ 12 사이의 값을 입력하세요 (%d)\n", month);
}
}
switch 문 예제(문제)
import java.util.Scanner;
public class Control_Statement_SWITCH_03 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 사용자로부터 3과목의 성적을 입력받아
// 총점, 평균, 등급을 출력하세요.
// (등급은 A ~ F)
// 1. 입력
// - 변수 선언
int s1, s2, s3;
// - 입력과정 수행
System.out.print("국어 성적을 입력하세요 : ");
s1 = in.nextInt();
System.out.print("영어 성적을 입력하세요 : ");
s2 = in.nextInt();
System.out.print("수학 성적을 입력하세요 : ");
s3 = in.nextInt();
// 2. 처리
// - 변수 선언
int tot;
double avg;
char grade;
// - 처리 과정 수행
// 총점
tot = s1 + s2 + s3;
// 평균
avg = tot / 3.0;
// 등급
// 아래의 if문을 switch 구문으로 변경하여 처리하세요.
// 삼항연산자를 쓴건 101~109점이 들어왔을때 / 10을 해도 10이 출력되기때문에
switch( avg < 0 || avg > 100 ? -1 : (int)avg / 10 ) {
case 10:
case 9: grade = 'A'; break;
case 8: grade = 'B'; break;
case 7: grade = 'C'; break;
case 6: grade = 'D'; break;
case 5: case 4: case 3: case 2: case 1: case 0:
grade = 'F'; break;
default: grade = '?';
}
// 3. 출력
System.out.printf("입력된 성적의 총점은 %d 점, 평균은 %.2f 점 입니다.\n", tot, avg);
if( grade != '?' )
System.out.printf("입력된 성적의 등급은 '%c' 입니다.\n", grade);
else
System.out.println("입력된 성적에 오류가 있습니다.");
}
}
728x90
반응형
'개발 > JAVA' 카테고리의 다른 글
자바 - 반복문 for 문, continue (0) | 2020.06.14 |
---|---|
자바 - 반복문 for 문 (1) (0) | 2020.06.14 |
자바 - 제어문 if문, if ~ else 문, (0) | 2020.06.14 |
java - 연산자, 전위/후위 증가/감소 연산자,비트(BIT) 연산자,시프트 연산자,삼항연산자 (0) | 2020.06.14 |
java - 연산자, 산술연산자,관계연산자,논리연산자,대입연산자,증가/감소 연산자 (0) | 2020.06.14 |