if(조건) { //조건식이 true일 때 아래 실행문 동작, false면 미실행
실행문;
실행문;
...
}
package chap_04;
public class _01_If {
public static void main(String[] args) {
// 조건문 If
int hour = 15; // 오후 3시
// if 문 내에서 하나의 문장을 실행할 때는 { } 생략 가능
if (hour < 14)
System.out.println("아이스 아메리카노 +1");
// if 문 내에서 2개 이상의 문장을 실행할 때는 { } 생략 불가
if (hour < 14) {
System.out.println("아이스 아메리카노 +1");
System.out.println("샷추가");
}
System.out.println("커피 주문 완료 #1");
// 오후 2시 이전, 모닝 커피를 마시지 않은 경우?
hour = 10;
boolean morningCoffee = false; // 모닝 커피
// if (hour < 14 && morningCoffee == false) {
if (hour < 14 && !morningCoffee) {
System.out.println("아이스 아메리카노 +1");
}
System.out.println("커피 주문 완료 #2");
// 오후 2시 이후이거나 모닝 커피를 마신 경우?
hour = 15;
morningCoffee = true;
// if (hour >= 14 || morningCoffee == true) {
if (hour >= 14 || morningCoffee) {
System.out.println("아이스 아메리카노 (디카페인) +1");
}
System.out.println("커피 주문 완료 #3");
}
}
if(조건) {
실행문; //조건식이 true일 경우 실행
}
else {
실행문; //조건식이 false일 경우 실행
}
package chap_04;
public class _02_Else {
public static void main(String[] args) {
// 조건문 If Else
int hour = 10;
if (hour < 14) { // 오후 2시 이전이면
System.out.println("아이스 아메리카노 +1");
} else { // 그 외의 경우이면
System.out.println("아이스 아메리카노 (디카페인) +1");
}
System.out.println("커피 주문 완료 #1");
// 오후 2시 이후이거나 모닝 커피를 마신 경우?
hour = 10;
boolean morningCoffee = false;
if (hour >= 14 || morningCoffee == true) { // 오후 2시 이후이거나 모닝 커피를 마신 경우?
System.out.println("아이스 아메리카노 (디카페인) +1");
} else { // 그 외의 경우이면
System.out.println("아이스 아메리카노 +1");
}
System.out.println("커피 주문 완료 #2");
}
}
if(조건식 1) {
실행문; //조건식 1이 true일 때 실행
}
else if(조건식2) {
실행문2; //조건식 1이 false이고 조건식 2가 true일 때 실행
}
else {
실행문; //조건식 1과 2가 false일 때 실행
}
※else if절은 여러 번 정의할 수 있고, else절은 생략이 가능
단, if문이 처음에 나오고 그 다음에 else if문, 제일 마지막에 else문이 나와야 한다.
package chap_04;
public class _03_ElseIf {
public static void main(String[] args) {
// 조건문 ElseIf
// 한라봉 에이드가 있으면 +1
// 또는 망고 주스가 있으면 +1
// 또는 아이스 아메리카노 +1
boolean hallabongAde = true; // 한라봉 에이드
boolean mangoJuice = true; // 망고 주스
if (hallabongAde) {
System.out.println("한라봉 에이드 +1");
} else if (mangoJuice) {
System.out.println("망고 주스 +1");
} else {
System.out.println("아이스 아메리카노 +1");
}
System.out.println("커피 주문 완료 #1");
// else if 는 여러번 사용 가능
hallabongAde = false;
mangoJuice = false;
boolean orangeJuice = true;
if (hallabongAde) {
System.out.println("한라봉 에이드 +1");
} else if (mangoJuice) {
System.out.println("망고 주스 +1");
} else if (orangeJuice) {
System.out.println("오렌지 주스 +1");
} else {
System.out.println("아이스 아메리카노 +1");
}
System.out.println("커피 주문 완료 #2");
// else 는 없어도 가능
hallabongAde = false;
mangoJuice = false;
orangeJuice = false;
if (hallabongAde) {
System.out.println("한라봉 에이드 +1");
} else if (mangoJuice) {
System.out.println("망고 주스 +1");
} else if (orangeJuice) {
System.out.println("오렌지 주스 +1");
}
System.out.println("커피 주문 완료 #3");
}
}
switch(입력변수) {
case 입력값1: ...
break;
case 입력값2: ...
break;
...
default: ...
break;
}
package chap_04;
public class _04_SwitchCase {
public static void main(String[] args) {
// Switch Case
// 석차에 따른 장학금 지급
// 1등 : 전액 장학금
// 2등 : 반액 장학금
// 3등 : 반액 장학금
// 그 외 : 장학금 대상 아님
// If Else 문을 이용 (여러 조건 또는 범위에 해당하는 조건)
int ranking = 4; // 등수
if (ranking == 1) {
System.out.println("전액 장학금");
} else if (ranking == 2 || ranking == 3) {
System.out.println("반액 장학금");
} else {
System.out.println("장학금 대상 아님");
}
System.out.println("조회 완료 #1");
// Switch Case 문을 이용 (명확한 케이스가 있는 경우)
ranking = 2;
switch (ranking) {
case 1:
System.out.println("전액 장학금");
break;
case 2:
System.out.println("반액 장학금");
break;
case 3:
System.out.println("반액 장학금");
break;
default:
System.out.println("장학금 대상 아님");
}
System.out.println("조회 완료 #2");
// case 2 와 3 을 통합
ranking = 3;
switch (ranking) {
case 1:
System.out.println("전액 장학금");
break;
case 2:
case 3:
System.out.println("반액 장학금");
break;
default:
System.out.println("장학금 대상 아님");
}
System.out.println("조회 완료 #3");
// 중고상품의 등급에 따른 가격을 책정 (1급 : 최상, 4급 : 최하)
int grade = 1; // 등급
int price = 7000; // 기본 가격
switch (grade) {
case 1:
price += 1000; // price = price + 1000;
//break;없음
case 2:
price += 1000;
//break;없음
case 3:
price += 1000;
break;
}
System.out.println(grade + "등급 제품의 가격 : " + price + "원");
// 1등급 제품의 가격 : 10000원
// 2등급 제품의 가격 : 9000원
}
}
for (초기식; 조건문; 증감식) {
... //조건식이 참일 동안만 반복
}
반복순서 구조화
초기식 -> 반복조건 -> 참인경우 for문 안으로(거짓인 경우 for문을 빠져 나감) -> 증감식 -> 반복조건 -> 참인경우 for문 안으로 -> 증감식 -> 반복조건 -> ...
무한루프
-> 반복조건에 세미콜론 두개나 true를 직접 넣게되면 무한루프가 실행
for(;;){ ... }
for(true){ ... }
package chap_04;
public class _05_For {
public static void main(String[] args) {
// 반복문 For
// 나코 매장
System.out.println("어서오세요. code._caine입니다.");
// 또다른 손님이 들어오면?
System.out.println("어서오세요. code._caine입니다.");
System.out.println("어서오세요. code._caine입니다.");
System.out.println("어서오세요. code._caine입니다.");
System.out.println("어서오세요. code._caine입니다.");
System.out.println("어서오세요. code._caine입니다.");
System.out.println("어서오세요. code._caine입니다.");
// 만약에 인사 법이 바뀌면?
System.out.println("환영합니다. code._caine입니다.");
System.out.println("환영합니다. code._caine입니다.");
System.out.println("환영합니다. code._caine입니다.");
// 매장 이름이 바뀌면?
// 나코 -> 코나
System.out.println("환영합니다. code._caine입니다.");
System.out.println("환영합니다. code._caine입니다.");
System.out.println("환영합니다. code._caine입니다.");
System.out.println(" ---- 반복문 사용 ---- ");
// 반복문 사용 For
for (int i = 0; i < 10; i++) {
// System.out.println("어서오세요. code._caine입니다. " + i);
// System.out.println("환영합니다. code._caine입니다. " + i);
System.out.println("환영합니다. code._caine입니다. " + i);
}
// 짝수만 출력 (fori 만 적고 엔터)
// 0, 2, 4, 6, 8
for (int i = 0; i < 10; i += 2) {
System.out.print(i);
}
System.out.println();
// 홀수만 출력
// 1, 3, 5, 7, 9
for (int i = 1; i < 10; i += 2) {
System.out.print(i);
}
System.out.println();
// 거꾸로 숫자
// 5, 4, 3, 2, 1
for (int i = 5; i > 0; i--) {
System.out.print(i);
}
System.out.println();
// 1부터 10까지의 수들의 합
// 1 + 2 + ... + 10 = 55
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i;
System.out.println("현재까지 총합은 " + sum + "입니다.");
}
System.out.println("1부터 10까지의 모든 수의 총합은 " + sum + "입니다.");
}
}
while (조건문) {
<수행할 문장1>;
<수행할 문장2>;
<수행할 문장3>;
...
}
package chap_04;
public class _06_While {
public static void main(String[] args) {
// 반복문 While
// 수영장에서 수영을 하는 모습
int distance = 25; // 전체 거리 25m
int move = 0; // 현재 이동 거리 0m
while (move < distance) { // 현재 이동 거리가 전체 거리보다 작다는 조건이 참인 동안 반복 수행
System.out.println("발차기를 계속 합니다.");
System.out.println("현재 이동 거리 : " + move);
move += 3; // 3미터 이동
}
System.out.println("도착하였습니다.");
// 무한 루프
move = 0;
while (move < distance) { // 현재 이동 거리가 전체 거리보다 작다는 조건이 참인 동안 반복 수행
System.out.println("발차기를 계속 합니다.");
System.out.println("현재 이동 거리 : " + move);
}
System.out.println("도착하였습니다.");
}
}
// 무한루프
do {
반복 실행할 문장;
} while(조건식) //조건식이 true일 경우 실행, false일 경우 종료(미실행)
예제
public class DoWhileEx01 { public static void main(String[] args) { int i = 1; // 초기값 설정 do { System.out.println(i + ". joker"); // 실행문 i++; // 증감식 } while (i <= 10); // 조건식 } }
-> 결과는 실행할 문장이 10번동안 반복되어 출력된다.
package chap_04;
public class _07_DoWhile {
public static void main(String[] args) {
// 반복문 DoWhile
int distance = 25; // 전체 거리 25m
int move = 0; // 현재 이동 거리 0m
int height = 2; // 키 2m
while (move + height < distance) {
System.out.println("발차기를 계속 합니다.");
System.out.println("현재 이동 거리 : " + move);
move += 3; // 3m 이동
}
System.out.println("도착했습니다.");
System.out.println(" --- 반복문 #1 ---");
// 키가 엄청나게 큰 사람?
move = 0;
height = 25; // 키가 25m
while (move + height < distance) {
System.out.println("발차기를 계속 합니다.");
System.out.println("현재 이동 거리 : " + move);
move += 3; // 3m 이동
}
System.out.println("도착했습니다.");
System.out.println(" --- 반복문 #2 ---");
// Do While 반복문
do {
System.out.println("발차기를 계속 합니다.");
System.out.println("현재 이동 거리 : " + move);
move += 3;
} while (move + height < distance);
System.out.println("도착했습니다.");
}
}
package chap_04;
public class _08_NestedLoop {
public static void main(String[] args) {
// 이중 반복문
// 별 (*) 사각형 만들기
/*
*****
*****
*****
*****
*****
*/
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("-----------------");
// 별 (*) 왼쪽 삼각형 만들기
/*
*
**
***
****
*****
*/
for (int i = 0; i < 5; i++) {
// for (int j = 0; j < i + 1; j++) {
for (int j = 0; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("-----------------");
// 별 (*) 오른쪽 삼각형 만들기
/*
*
**
***
****
*****
SSSS*
SSS**
SS***
S****
*****
*/
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 4 - i; j++) {
System.out.print(" ");
}
for (int k = 0; k <= i ; k++) {
System.out.print("*");
}
System.out.println();
}
}
}
※무조건 이해하는 게 중요!!
package chap_04;
public class _09_MultipleTable {
public static void main(String[] args) {
// 구구단
// 2 * 1 = 2
// 2 * 2 = 4
for (int i = 2; i < 10; i++) {
for (int j = 1; j < 10; j++) {
System.out.println(i + " x " + j + " = " + (i * j));
}
System.out.println();
}
}
}
2 X 1 = 2
2 X 2 = 4
2 X 3 = 6
2 X 4 = 8
2 X 5 = 10
2 X 6 = 12
2 X 7 = 14
2 X 8 = 16
2 X 9 = 18
3 X 1 = 3
3 X 2 = 6
3 X 3 = 9
3 X 4 = 12
3 X 5 = 15
3 X 6 = 18
3 X 7 = 21
3 X 8 = 24
3 X 9 = 27
4 X 1 = 4
4 X 2 = 8
4 X 3 = 12
4 X 4 = 16
4 X 5 = 20
4 X 6 = 24
4 X 7 = 28
4 X 8 = 32
4 X 9 = 36
5 X 1 = 5
5 X 2 = 10
5 X 3 = 15
5 X 4 = 20
5 X 5 = 25
5 X 6 = 30
5 X 7 = 35
5 X 8 = 40
5 X 9 = 45
6 X 1 = 6
6 X 2 = 12
6 X 3 = 18
6 X 4 = 24
6 X 5 = 30
6 X 6 = 36
6 X 7 = 42
6 X 8 = 48
6 X 9 = 54
7 X 1 = 7
7 X 2 = 14
7 X 3 = 21
7 X 4 = 28
7 X 5 = 35
7 X 6 = 42
7 X 7 = 49
7 X 8 = 56
7 X 9 = 63
8 X 1 = 8
8 X 2 = 16
8 X 3 = 24
8 X 4 = 32
8 X 5 = 40
8 X 6 = 48
8 X 7 = 56
8 X 8 = 64
8 X 9 = 72
9 X 1 = 9
9 X 2 = 18
9 X 3 = 27
9 X 4 = 36
9 X 5 = 45
9 X 6 = 54
9 X 7 = 63
9 X 8 = 72
9 X 9 = 81
Process finished with exit code 0
package chap_04;
public class _10_Break {
public static void main(String[] args) {
// Break
// 치킨 집에서 매일 20마리만 판매 (1인당 1마리만 구매 가능)
// 손님이 50명 대기
// For 문
int max = 20;
for (int i = 1; i <= 50; i++) {
System.out.println(i + "번 손님, 주문하신 치킨 나왔습니다.");
if (i == max) {
System.out.println("금일 재료가 모두 소진되었습니다.");
break; // 반복문을 탈출
}
}
System.out.println("영업을 종료합니다.");
System.out.println("---------------------");
// While 문
int index = 1; // 손님 대기 번호
while (index <= 50) {
System.out.println(index + "번 손님, 주문하신 치킨 나왔습니다.");
if (index == max) {
System.out.println("금일 재료가 모두 소진되었습니다.");
break;
}
index++;
}
System.out.println("영업을 종료합니다.");
}
}
1번 손님, 주문하신 치킨 나왔습니다.
2번 손님, 주문하신 치킨 나왔습니다.
3번 손님, 주문하신 치킨 나왔습니다.
4번 손님, 주문하신 치킨 나왔습니다.
5번 손님, 주문하신 치킨 나왔습니다.
6번 손님, 주문하신 치킨 나왔습니다.
7번 손님, 주문하신 치킨 나왔습니다.
8번 손님, 주문하신 치킨 나왔습니다.
9번 손님, 주문하신 치킨 나왔습니다.
10번 손님, 주문하신 치킨 나왔습니다.
11번 손님, 주문하신 치킨 나왔습니다.
12번 손님, 주문하신 치킨 나왔습니다.
13번 손님, 주문하신 치킨 나왔습니다.
14번 손님, 주문하신 치킨 나왔습니다.
15번 손님, 주문하신 치킨 나왔습니다.
16번 손님, 주문하신 치킨 나왔습니다.
17번 손님, 주문하신 치킨 나왔습니다.
18번 손님, 주문하신 치킨 나왔습니다.
19번 손님, 주문하신 치킨 나왔습니다.
20번 손님, 주문하신 치킨 나왔습니다.
금일 재료가 모두 소진되었습니다.
영업을 종료합니다.
---------------------
1번 손님, 주문하신 치킨 나왔습니다.
2번 손님, 주문하신 치킨 나왔습니다.
3번 손님, 주문하신 치킨 나왔습니다.
4번 손님, 주문하신 치킨 나왔습니다.
5번 손님, 주문하신 치킨 나왔습니다.
6번 손님, 주문하신 치킨 나왔습니다.
7번 손님, 주문하신 치킨 나왔습니다.
8번 손님, 주문하신 치킨 나왔습니다.
9번 손님, 주문하신 치킨 나왔습니다.
10번 손님, 주문하신 치킨 나왔습니다.
11번 손님, 주문하신 치킨 나왔습니다.
12번 손님, 주문하신 치킨 나왔습니다.
13번 손님, 주문하신 치킨 나왔습니다.
14번 손님, 주문하신 치킨 나왔습니다.
15번 손님, 주문하신 치킨 나왔습니다.
16번 손님, 주문하신 치킨 나왔습니다.
17번 손님, 주문하신 치킨 나왔습니다.
18번 손님, 주문하신 치킨 나왔습니다.
19번 손님, 주문하신 치킨 나왔습니다.
20번 손님, 주문하신 치킨 나왔습니다.
금일 재료가 모두 소진되었습니다.
영업을 종료합니다.
Process finished with exit code 0
package chap_04;
public class _11_Continue {
public static void main(String[] args) {
// Continue
// 치킨 주문 손님중에 노쇼 손님이 있다고 가정
// For
int max = 20; // 최대 치킨 판매 수량
int sold = 0; // 현재 치킨 판매 수량
int noShow = 17; // 대기번호 17번 손님이 노쇼
for (int i = 1; i <= 50; i++) {
System.out.println(i + "번 손님, 주문하신 치킨 나왔습니다.");
// 손님이 없다면? (noShow)
if (i == noShow) {
System.out.println(i + "번 손님, 노쇼로 인해 다음 손님에게 기회가 넘어갑니다.");
continue;
}
sold++; // 판매 처리
if (sold == max) {
System.out.println("금일 재료가 모두 소진되었습니다.");
break;
}
}
System.out.println("영업을 종료합니다.");
System.out.println("------------------");
// While 문
sold = 0;
int index = 0; // 손님 번호
// while (index <= 50) {
while (true) {
index++;
System.out.println(index + "번 손님, 주문하신 치킨 나왔습니다.");
// 손님이 없다면 (noShow)
if (index == noShow) {
System.out.println(index + "번 손님, 노쇼로 인해 다음 손님에게 기회가 넘어갑니다.");
continue;
}
sold++; // 판매 처리
if (sold == max) {
System.out.println("금일 재료가 모두 소진되었습니다.");
break;
}
}
System.out.println("영업을 종료합니다.");
}
}
1번 손님, 주문하신 치킨 나왔습니다.
2번 손님, 주문하신 치킨 나왔습니다.
3번 손님, 주문하신 치킨 나왔습니다.
4번 손님, 주문하신 치킨 나왔습니다.
5번 손님, 주문하신 치킨 나왔습니다.
6번 손님, 주문하신 치킨 나왔습니다.
7번 손님, 주문하신 치킨 나왔습니다.
8번 손님, 주문하신 치킨 나왔습니다.
9번 손님, 주문하신 치킨 나왔습니다.
10번 손님, 주문하신 치킨 나왔습니다.
11번 손님, 주문하신 치킨 나왔습니다.
12번 손님, 주문하신 치킨 나왔습니다.
13번 손님, 주문하신 치킨 나왔습니다.
14번 손님, 주문하신 치킨 나왔습니다.
15번 손님, 주문하신 치킨 나왔습니다.
16번 손님, 주문하신 치킨 나왔습니다.
17번 손님, 주문하신 치킨 나왔습니다.
17번 손님, 노쇼로 인해 다음 손님에게 기회가 넘어갑니다.
18번 손님, 주문하신 치킨 나왔습니다.
19번 손님, 주문하신 치킨 나왔습니다.
20번 손님, 주문하신 치킨 나왔습니다.
21번 손님, 주문하신 치킨 나왔습니다.
금일 재료가 모두 소진되었습니다.
영업을 종료합니다.
------------------
1번 손님, 주문하신 치킨 나왔습니다.
2번 손님, 주문하신 치킨 나왔습니다.
3번 손님, 주문하신 치킨 나왔습니다.
4번 손님, 주문하신 치킨 나왔습니다.
5번 손님, 주문하신 치킨 나왔습니다.
6번 손님, 주문하신 치킨 나왔습니다.
7번 손님, 주문하신 치킨 나왔습니다.
8번 손님, 주문하신 치킨 나왔습니다.
9번 손님, 주문하신 치킨 나왔습니다.
10번 손님, 주문하신 치킨 나왔습니다.
11번 손님, 주문하신 치킨 나왔습니다.
12번 손님, 주문하신 치킨 나왔습니다.
13번 손님, 주문하신 치킨 나왔습니다.
14번 손님, 주문하신 치킨 나왔습니다.
15번 손님, 주문하신 치킨 나왔습니다.
16번 손님, 주문하신 치킨 나왔습니다.
17번 손님, 주문하신 치킨 나왔습니다.
17번 손님, 노쇼로 인해 다음 손님에게 기회가 넘어갑니다.
18번 손님, 주문하신 치킨 나왔습니다.
19번 손님, 주문하신 치킨 나왔습니다.
20번 손님, 주문하신 치킨 나왔습니다.
21번 손님, 주문하신 치킨 나왔습니다.
금일 재료가 모두 소진되었습니다.
영업을 종료합니다.
Process finished with exit code 0
Q. 조건문을 활용하여 주차 요금 정산 프로그램을 작성
조건
package chap_04;
// 주차요금은 시간당 4000 원 (일일 최대 요금은 30000 원)
// 경차 또는 장애인 차량은 최종 요금에서 50% 할인
//예시
// 일반 차량 5시간 주차 시 20000 원
// 경차 5시간 주차 시 10000 원
// 장애인 차량 10시간 주차 시 15000 원
// 실행결과 : 주차 요금은 xx 원입니다.
public class _Quiz_04 {
public static void main(String[] args) {
int hour = 10; // 주차 시간
boolean isSmallCar = false; // 경차 여부
boolean withDisabledPerson = true; // 장애인 차량 여부
int fee = hour * 4000; // 주차 정산 요금 (시간당 4000 원 곱하기)
// 30000 원 초과 시 일일 최대 요금으로 수정
if (fee > 30000) {
fee = 30000; // 일일 최대 요금 적용
}
// 경차 또는 장애인 차량인 경우 50% 할인
if (isSmallCar || withDisabledPerson) {
fee /= 2; // 50% 할인 적용
}
// 실행 결과 출력
System.out.println("주차 요금은 " + fee + " 원입니다.");
}
}