제어문 (Control Statements)

2023. 11. 22. 15:05
728x90

제어문 : 프로그램을 제어하는 문장 

 

1. 조건문

1) if

: 어떤 조건(boolean)에 대하여 코드를 실행할지 말지를 결정하는 제어문

if (<조건>) {
	조건이 맞으면 실행할 코드
}

- {} 이후에는 조건과 상관없이 수행된다. 

- if문 내부에 추가로 조건문을 넣을 수 있다. 

int year = 2024;
System.out.println("윤년일까?");

if (year % 4 == 0) {
	if (year % 100 !=0) {
    System.out.println("윤년이다.");
    }
    if (year % 100 == 0 && year % 400 != 0) {
    	System.out.println("윤년 아니다.");
    }
    if (year % 400 == 0) {
    	System.out.println("윤년이다.");
    }
}
//출력 윤년일까? 윤년이다.

 

2) else

: if에 주어진 조건을 만족하지 않을 때만 실행하는 코드를 정의하고 싶으면 else를 사용.

if (<조건>) {
	조건이 참일 때 실행되는 코드
} else {
	조건이 거짓일 때 실행되는 코드
}
int year = 2024;
System.out.println("윤년일까?");

if (year % 4 == 0) {
	if (year % 100 !=0 && year % 400 ==0) {
    	System.out.println("윤년이다.");
    } else {
    	System.out.println("윤년 아니다.");
    }
} else {
	System.out.println("윤년 아니다.")
}
//출력 윤년일까? 윤년이다.

 

3) else if

: 한가지 이상의 조건이 필요한 경우 else if문을 사용

- 앞의 조건을 만족한다면, 다음 조건은 확인하지 않는다. 

if (<조건1>) {
	조건1이 참일 때 실행되는 코드
} else if (<조건2>) {
	조건1이 거짓이고, 조건2가 참일 때 실행되는 코드
} else if (<조건3>) {
	조건1, 조건2가 거짓이고, 조건3가 참일 때 실행되는 코드
} else {
	모든 조건이 거짓일 때 실행되는 코드
}

 

 

4) switch-case

: 만약 확인하는 조건이 어떤 데이터인지 중요하다면?

- break를 만나면 멈춤!! 해당 case가 끝난 뒤 switch가 종료되도록~ 

switch (<확인할 값>) {
	case <비교할 값> : 
    	참일 때 실행할 코드
    	break; //case의 끝에는 꼭 break를 해줘야 한다.
    case <비교할 값> : 
    	참일 때 실행할 코드
    	break;
        ...
    default : 
    	기본 코드
        break;
}

- enhanced switch문

switch (input) {
    case "w" ->
        System.out.println("up");
    case "a" ->
        System.out.println("left");
    case "s" ->
        System.out.println("down");
    case "d" ->
        System.out.println("right");
}

 

2. 반복문 

: 일정한 코드를 반복해서 실행하고 싶을 때 활용할 수 있음. 코드가 언제 반복할지 정하여 조건을 설정해야 함.

 

1) while

while (반복할 조건) {
	반복 실행할 코드
}

- 반복할 조건이 true라면 무조건 반복해서 수행되기 때문에, { } 영역 안에서 조건이 적당히 변하도록 해주어야 함. (그렇지 않으면 무한루프에 빠지게 된다.)

- while 내부에도 if나 while과 같은 제어문 삽입 가능.

int loan = 1000; // 1) 대출금 1000만원
while (loan > 0) {
	int payoff = 50;
    if (loan <50) { // 4) 50만원 미만 남으면 한번에 갚고, 대출금 0원.
    	payoff = loan;
        loan = 0;
    } else {
    	loan -= 50; // 2) 50만원씩 갚고
    }
    loan *= 1.03; // 3) 남은 대출금에 이자까지 합쳐짐
    System.out.println(String.format("paid off %d, reamins: %d", payoff, loan));
}
System.out.println("no more loans!"); // 5) 대출금 0원이면 탈출. 다갚음
  • 대출금 1000만원 > 계속 50만원 갚음 > 남은 대출금에 이자 3% 추가 > 계속 반복하다가 대출금이 50만원 미만으로 남으면 한번에 갚고, 대출금은 0원이 됨 > while(loan>0)이기 때문에 대출금이 0원이 되면 while 반복문을 나옴 > 마지막 코드 실행.

 

2) for

: 세 부분으로 나누어 반복할 조건 설정하는 반복문

 - 반복을 실행하기 전 실행할 코드 (변수 선언/할당)

 - 반복을 유지할 조건 (while문의 조건과 동일)

 - 한 번의 반복이 끝날 때 그 후 실행할 코드

for (int i = 0; i < 5; i++) {
	System.out.println("로그인 정보를 입력하세요.");
}
System.out.println("5회 로그인에 실패하여 계정이 잠겼습니다.");

- 내부의 조건을 명시하지 않을 수도 있다. >> 무한루프

for (;;) {
 	무한루프...
}

 

3) foreach

: 배열과 같은 복수의 데이터를 가지고 있는 변수에 대하여 사용할 수 있는 특수한 형태의 반복문.

String[] fruits = {"apple", "pear", "banana"};
for (String name : fruits) {
	System.out.println(name);
}
// 출력 apple pear banana

 

4) 반복문 제어

- 특정 상황에서 반복을 중단하거나, 일부 코드를 실행하고 싶지 않을 수 있다.

ex. 회원정보 일치 시 반복 중단, 입력이 유효하지 않을 시 회원정 확인 건너뛰기 등

 

- break : 반복문 수행 중 만나면 반복을 중단

- continue : 반복문 수행 중 만나면 다음 반복을 시작 (반복문의 나머지 코드 무시) 

int price = 50;
int money = 200;
for (int i = 0; i < 5; i++) {
    money -= price;
    if (money - price < 0) {
        System.out.println("돈 다 썼어요");
        System.out.println(i);  // 3
        break;                  // 반복 중단
    }
}

for (int i = 0; i < 10; i++) {
    if (i % 2 != 0) {  // i가 2짝수가 아닐 경우,
        continue;      // 나머지 코드는 무시
    }
    System.out.println(i);
}

 

728x90

'Programming > Java' 카테고리의 다른 글

클래스 (Class)  (1) 2023.11.28
메서드 (Methods)  (1) 2023.11.23
연산자 (Operators)  (0) 2023.11.21
변수와 자료형 (Variables and Types)  (1) 2023.11.20
자바 개요  (1) 2023.11.20

BELATED ARTICLES

more