제어문 - 조건문
조건문
- 프로그램 수행 흐름을 바꾸는 역할하는 제어문 중 하나
- 조건에 따라 다른 실행 블록이 수행
if( 조건식 ) {
실행 블록
}
기본 문법은 이렇고, 괄호 안에 조건식을 쓰고,
그 조건이 참일 경우 실행 블록에 있는 코드를 실행한다.
if문
if( num > 0 ) { // num이 0보다 크면
System.out.println("양수"); // 실행 블록 실행
}
if ~ else문
if( num > 0 ) { // num이 0보다 크면
System.out.println("양수"); // 양수 출력
} else {
System.out.println("음수"); // 0 보다 작으면 음수 출력
}
num이라는 변수에 담긴 값에 따라 실행 되는 블록이 다르다.
int num = 1;
if( num > 0 ) {
System.out.println("양수");
} else {
System.out.println("음수");
}
// 출력 결과 : 양수
int num = -1;
if( num > 0 ) {
System.out.println("양수");
} else {
System.out.println("음수");
}
// 출력 결과 : 음수
if ~ esle if ~ else문
if( 조건식 1 ) {
실행 a
} else ( 조건식 2) {
실행 b
} else {
실행 c
}
제일 먼저 조건식 1에 만족 여부를 가리고, 그다음 조건식으로 넘어간다.
int age = 60;
if( age <= 13 ) { // 13 이하
System.out.println(age + "세는 어린이입니다.");
} else ( age > 13 && age >= 19) { // 13 이상 19 이하
System.out.println(age + "세는 청소년입니다.");
} else { // 19 이상
S ystem.out.println(age + "세는 성인입니다.");
}
ge에 60(세)를 담고
1) ( age <= 13 ) 조건식 1 확인
2) age는 13보다 크기 때문에 조건식 2로 이동
3) 조건식 2도 참이 아니기 때문에 그외 다른 선택, else로 빠진다.
중첩 if 문
- if문 중첩 사용 가능
- 무분별하게 사용 시 가독성 문제
오늘 중첩 if문 실습문제는 없어서 혼자 문제를 만들고 풀어봤다.
문제) 시험 점수를 입력 받고, 점수가 70 - 100점 사이일 경우 PASS를 출력하고, 아닐 경우 FAIL을 출력.
- 90 - 100점 사이일 경우 A 출력
- 80 - 89점 사이일 경우 B 출력
- 70 - 79점 사이일 경우 C 출력
- 0점 미만, 100점 이상을 입력할 경우 다시 입력하세요 출력
int score = 0;
Scanner scanner = new Scanner(System.in);
System.out.print("시험 점수를 입력하세요. : ");
score = scanner.nextInt();
if ( score >= 70 && score <=100 ) { // 70 - 100점 사이인지 확인
System.out.print("PASS "); // 맞으면 출력
if ( score >= 90 && score <= 100 ) { // 90 - 100점 사이일 경우
System.out.println("A"); // A 출력
} else if ( score >= 80 && score <= 89 ) { // 80 - 89 사이일 경우
System.out.println("B"); // B 출력
} else { // 70 - 100 점 사이이지만 조건식 1, 2도 아닌 경우
System.out.println("C"); // C 출력
}
} else if ( score > 100 || score < 0 ) { // 100점 이상 0점 미만 입력시
System.out.println("다시 입력하세요."); // 다시 입력하세요 출력
} else { // 위 조건식이 전부 아닐 때 출력
System.out.println("FAIL");
}
우선 70 - 100점 사이인지 아닌지 구별해서 PASS 와 FAIL을 출력한다.
70 - 100점 사이일 경우 PASS를 출력하고 A, B, C등급을 구분하여 또 출력한다.
그 외 숫자 입력시 FAIL과 다시 입력하세요를 출력한다.
switch문
- 조건식 하나로 많은 경우의 수 처리
- 결과 값은 정수, 문자, 문자열
- 문자열은 JDK 7 이상부터 지원
- break문 없을 경우 다음 case 내에 break문에 도달할 때까지 실행
- default문은 일치하는 case문이 없을 경우 수행
- if문의 eale와 같은 기능(생략 가능)
switch ( 조건식) {
case 1:
// 결과 값이 1이면 실행
break;
case 2:
// 결과 값이 2이면 실행
break;
default:
// 결과 값과 일치하는 게 없을 경우 실행
}
String fruit = "";
Scanner scanner = new Scanner(System.in);
System.out.print("복숭아, 귤, 수박, 망고 중 하나를 입력하세요. : " );
fruit = scanner.nextLine();
switch( fruit ) {
case "복숭아" :
System.out.println("복숭아를 입력했습니다.");
break;
case "귤" :
System.out.println("귤을 입력했습니다.");
break;
case "수박" :
System.out.println("수박을 입력했습니다.");
break;
case "망고" :
System.out.println("망고를 입력했습니다.");
break;
default :
System.out.println("다시 입력해주세요.");
}
제시 된 과일명 중 하나를 입력 받고, 해당 과일명이 있는 case문으로 이동한다.
그 외의 과일명 입력시 다시 입력해주세요. 출력 « 조건에 맞는 case가 없기 때문.