조건문
컴퓨터 과학에서 조건문(conditional)이란 프로그래머가 명시한 불린(boolean) 자료형 조건이
참인지 거짓인지에 따라 달라지는 계산이나 상황을 수행하는 프로그래밍 언어의 특징이다.
if 문
조건식이 참일 때는 실행문1을 실행한 후 실행문2를 실행한다.
그러나 조건식이 거짓인 경우에는 실행문1을 실행하지 않고 실행문2만 실행한다.
[예제 1] 조건식이 참일 경우
1. boolean 자료형 변수 flag를 선언 및 초기값을 true로 초기화한다.
2. 조건문 if 문의 조건을 변수 flag로 한다.
3. 변수 flag의 초기값은 true이기때문에 조건식의 결과는 true이다.
4. 조건식이 true이기때문에 if 문 안에 출력문을 출력한다.
5. if 문의 닫는 브레이스(})를 빠져나와 main() 메소드 안에 출력문을 출력한다.
[예제 2] 조건식이 거짓일 경우
1. boolean 자료형 변수 flag를 선언 및 초기값을 false로 초기화한다.
2. 조건문 if 문의 조건을 변수 flag로 한다.
3. 변수 flag의 초기값은 false이기때문에 조건식의 결과는 false이다.
4. 조건식의 결과가 false이기때문에 if 문 안에 출력문은 출력되지않는다.
5. if 문의 닫는 브레이스(})를 빠져나와 main() 메소드 안에 출력문을 출력한다.
if ~ else 문 (양자 택일)
조건식이 참일 때, 실행문1과 실행문3을 실행한다.
반대로 조건식이 거짓일 때, 실행문2와 실행문3을 실행한다.
[예제] 조건식이 거짓일 경우
1. boolean 자료형 변수 flag를 선언 및 초기값을 false로 초기화한다.
2. 조건문 if 문의 조건을 변수 flag로 한다.
3. 변수 flag의 초기값은 false이기때문에 조건식의 결과는 false이다.
4. 조건식의 결과가 false이기때문에 if 문 안에 출력문은 출력되지않고 else 문 안에
출력문이 출력된다.
5. if ~ else 문의 닫는 브레이스(})를 빠져나와 main() 메소드 안에 출력문을 출력한다.
더 많은 다른 예제를 통해 if 문과 if ~ else 문 이해해보자.
[예제 1] 문자열 자료형이 "F"이면 "여자입니다." 아니면 "남자입니다."를 출력하세요.
** 원래 'F'는 문자열이 아닌 문자 자료형이지만 .equals를 사용하기 위해 일부러
문자열 자료형이라 칭했다.
1. Scanner 클래스를 main() 메소드안에 로컬(지역) 변수로 import 한다.
(Scanner 클래스는 굳이 안해도 되지만 숙달하기 위해 사용을 했다.)
2. 키보드로 입력받기 전 print 출력서식으로 "성별을 입력하세요." 문구를 출력한다.
3. String 레퍼런스 타입 변수 gender는 Scanner 클래스 변수 sc에 저장되어있는 nextLine()
메소드를 불러온다.
4. if ~ else 문을 이용하여 if 문의 조건식에 변수 gender와 문자열 "F"를 .equals() 메소드로
비교하여 키보드로 "F"를 입력하면 print 출력서식에 "여자입니다."라고 출력하고 그 외에 문자
를 입력하면 "남자입니다."를 출력한다.
[예제 2] 문자열 자료형이 "M" 이거나 "m"이면 "남자입니다.",
"F" 이거나 "f"이면 "여자입니다."를 출력하세요.
1. Scanner 클래스를 main() 메소드안에 로컬(지역) 변수로 import 한다.
2. 키보드로 입력받기 전 print 출력서식으로 "성별을 입력하세요." 문구를 출력한다.
3. String 레퍼런스 타입 변수 gender는 Scanner 클래스 변수 sc에 저장되어있는 nextLine()
4. if문에 변수 gender와 키보드로 입력받은 문자열이 "M" 이거나 "m"인 경우에는 print 출력
서식에 "남자입니다."라고 출력한다.
5. if 문의 조건식이 거짓이고 키보드로 입력받은 문자열이 "F" 이거나 "f" 인 경우에는 print
출력서식에 "여자입니다."라는 문구를 출력한다.
[예제 3] 키보드로 입력받은 값이 2로 나누어 떨어지면 "짝수입니다."라고 출력하고 그렇지
않으면 "홀수입니다."라고 출력하세요.
1. Scanner 클래스를 main() 메소드안에 로컬(지역) 변수로 import 한다.
2. 키보드로 입력받기 전 print 출력서식으로 "숫자를 입력하시오." 문구를 출력한다.
3. int형 변수 num에 키보드로 숫자를 입력 받는다.
4. if 문 조건식에 입력받은 숫자가 2로 나눈 나머지가 0인 수는 print 출력서식에
"짝수입니다."라고 출력하고 2로 나눈 나머지가 0이 아닌 경우에는 "홀수입니다."
를 출력한다.
[예제 4] int형 변수 num에 키보드로 입력받은 수가 0보다 크고 100보다 작거나 같으면
"1~ 100 사이의 숫자입니다."를 출력하고 그 외 수이면 "1~ 100 사이의 숫자가 아닙니다."
라고 출력하세요.
1. Scanner 클래스를 main() 메소드안에 로컬(지역) 변수로 import 한다.
2. 키보드로 입력받기 전 print 출력서식으로 "숫자를 입력하시오." 문구를 출력한다.
3. int형 변수 num에 키보드로 숫자를 입력 받는다.
4. int형 변수 num에 키보드로 입력받은 숫자가 0보다 크고 100보다 작거나 같으면
"1~ 100 사이의 숫자입니다."를 출력하고 그 외 숫자이면 "1~ 100 사이의 숫자가
아닙니다."라고 출력한다.
다중 if ~ else 문
[예제 1] 키보드로 숫자를 입력받아 다중 if ~ else 문의 조건식에 맞게 양수, 음수, 0 중
하나를 출력하세요.
1. Scanner 클래스를 main() 메소드안에 로컬(지역) 변수로 import 한다.
2. 키보드로 입력받기 전 print 출력서식으로 "숫자를 입력하세요." 문구를 출력한다.
3. int형 변수 num에 키보드로 숫자를 입력 받는다.
4. int형 변수 num에 키보드로 입력받은 숫자가 0보다 크면 "양수입니다."를 출력하고
입력받은 숫자가 0보다 작으면 "음수입니다."를 출력하고 아니면 "0입니다."를 출력한다.
[예제 2] 키보드로 숫자를 입력받아 학점이 90점 이상이면 'A'학점, 80점 이상이면 'B'학점, 70점 이상이면 'C'학점, 60점 이상이면 'D'학점, 60점 미만이면 'F'학점을 주는 다중 if ~ else문을 작성하세요.
1. Scanner 클래스를 main() 메소드안에 로컬(지역) 변수로 import 한다.
2. 키보드로 입력받기 전 print 출력서식으로 "당신의 점수를 입력하세요." 문구를 출력한다.
3. int형 변수 num에 키보드로 숫자를 입력 받는다.
4. if문 조건식에 변수 num이 100보다 크거나 0보다 작은 경우에는 "0~ 100 사이의 점수를
입력하세요."라는 문구를 출력하고, 변수 num이 90보다 크거나 100일 경우에는 "당신은
'A'학점입니다."를 else if 문의 조건식 변수 num이 80보다 크면 "당신은 'B'학점입니
다."를 마찬가지로 70보다 크면 "당신은 'C'학점입니다."를 60보다 크면 "당신은 'D'학
점입니다."를 그 외 숫자는 "당신은 'F'학점입니다."를 출력한다.
switch ~ case 문
switch ~ case 문은 수식의 값과 각 case문의 값이 동일하면 실행문을 실행하고 만약 실행문을 실행한 후
break문이 있다면 즉시 switch ~ case 문을 빠져나간다. 실행문을 실행하고 break 문이 없다면 그 다음
case 문을 실행한다. 만약 모든 case 문의 값이 수식의 값과 일치하지 않는 경우에는 default의 실행문을
실행한다.
수식에는 정수형, 문자열형, enum이 올 수 있다.
[예제 1] 키보드로 숫자를 입력받아 1이면 월요일, 2이면 화요일, ..., 7이면 일요일, 그 외의 숫자이면 "1~ 7 사이의 숫자를 입력하세요."라는 문자열을 출력하세요.
1. Scanner 클래스를 main() 메소드안에 로컬(지역) 변수로 import 한다.
2. 키보드로 입력받기 전 print 출력서식으로 "숫자를 입력하세요." 문구를 출력한다.
3. int형 변수 weekday에 키보드로 숫자를 입력 받는다.
4. switch ~ case 문에 수식에 키보드로 입력받은 값이 1~ 7 사이의 값이면 월요일 ~
일요일의 문자열이 출력되고 그 외의 숫자이면 "1~ 7 사이의 숫자를 입력하세요."가
출력된다.
[예제 2] 키보드로 숫자를 입력받아 당신의 학점이 90점 이상이면 'A'학점, 80점 이상이면, 'B'학점, 70점 이상이면 'C'학점, 60점 이상이면 'D'학점, 그 외는 'F'학점을 주는 switch-case 문을 작성하세요.(점수가 0미만이거나 100초과이면 "0~ 100 사이의 점수를 입력하세요."라는 문자열을 출력하세요.)
1. Scanner 클래스를 main() 메소드안에 로컬(지역) 변수로 import 한다.
2. 키보드로 입력받기 전 print 출력서식으로 "숫자를 입력하세요." 문구를 출력한다.
3. int형 변수 score에 키보드로 숫자를 입력 받는다.
4. if문 조건식에 변수 score가 100보다 크거나 0보다 작은 경우에는 "0~ 100 사이의 점수를
입력하세요."라는 문구를 출력하고 프로그램을 종료한다. 변수 score가 0보다 크거나
100보다 작은경우 switch 수식에 변수 score를 10으로 나눈 몫이 10 이거나 9이면
"당신은 'A'학점입니다."를 10으로 나눈 몫이 8이면 "당신은 'B'학점입니다."를 마찬가지로
나눈 몫이 7이면 "당신은 'C'학점입니다."를 나눈 몫이 6이면 "당신은 'D'학점입니다."를
나눈 몫이 그 외 숫자이면 "당신은 'F'학점입니다."를 출력한다.