제어문 (Control Statements)
제어문 : 프로그램을 제어하는 문장
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);
}
'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 |