자바 프로그램은 main() 메소드의 시작 중괄호에서 끝 중괄호까지 위에서부터 아래로 실행하는 흐름을 가지고 있다. 이러한 실행 흐름을 개발자가 원하는 방향으로 바꿀 수 있도록 해주는 것이 흐름 제어문(이하 제어문)이다. 제어문의 종류는 다음과 같다.
| 조건문 | 반복문 |
| if 문, switch 문 | for 문, while 문, do-while 문 |
제어문 블록이 실행 완료된 후 다시 제어문의 처음으로 돌아갈지, 아니면 제어문 블록을 빠져 나와 정상 흐름으로 다시 돌아올지는 어떤 제어문을 사용하느냐에 달려 있다. 조건문일 경우는 정상 흐름으로 돌아오지만, 반복문일 경우는 제어문의 처음으로 다시 되돌아가 반복 실행한다. 이것을 루핑(Looping)이라고 한다. 제어문 블록 내부에는 또 다른 제어문을 사용할 수 있다. 그렇기 때문에 개발자가 원하는 매우 복잡한 흐름 제어도 가능하다.
if 문
if 문은 조건식의 결과에 따라 블록 실행 여부가 결정된다. 다음은 if 문의 실행 흐름을 보여준다.
if (조건식) {
실행문;
}
조건식에는 true 또는 false 값을 산출할 수 있는 연산식이나 boolean 변수가 올 수 있다. 조건식이 true면 블록을 실행하고 false면 실행하지 않는다. 중괄호 블록 내에 실행문이 하나밖에 없다면 중괄호를 생략할 수 있다.
if (조건식)
실행문;
if 문 예제 : 짝수/홀수 판별
public class Main {
public static void main(String[] args) {
int number = 10;
if (number % 2 == 0) {
System.out.println(number + "는 짝수입니다.");
} else {
System.out.println(number + "는 홀수입니다.");
}
}
}
조건문이 여러 개인 if 문은 else if 문으로 간단히 처리할 수 있다.
if (조건식1) {
실행문;
} else if (조건식2) {
실행문;
} else {
실행문;
}
else if 문 예제 : 주사위 난수 생성
public class DiceExample {
public static void main(String[] args) {
int num = (int)(Math.random() * 6) + 1;
if(num = 1) {
System.out.println("1번이 나왔습니다.");
} else if(num = 2) {
System.out.println("2번이 나왔습니다.");
} else if(num = 3) {
System.out.println("3번이 나왔습니다.");
} else if(num = 4) {
System.out.println("4번이 나왔습니다.");
} else if(num = 5) {
System.out.println("5번이 나왔습니다.");
} else {
System.out.println("6번이 나왔습니다.");
}
}
}
if 문의 블록 내부에는 또 다른 if 문을 사용할 수 있다. 이것을 중첩 if 문이라 부르는데, 중첩의 단계는 제한이 없다.
중첩 if 문 예제 : 나이에 따른 입장료 계산
public class Main {
public static void main(String[] args) {
int age = 15;
boolean isMember = true; // 회원 여부
if (age < 18) {
System.out.println("청소년 요금 적용");
if (isMember) {
System.out.println("입장료: 5,000원 (회원 할인 적용)");
} else {
System.out.println("입장료: 7,000원");
}
} else {
System.out.println("성인 요금 적용");
if (isMember) {
System.out.println("입장료: 10,000원 (회원 할인 적용)");
} else {
System.out.println("입장료: 12,000원");
}
}
}
}'Language > JAVA' 카테고리의 다른 글
| [JAVA] switch 문 (7) | 2024.09.03 |
|---|---|
| [JAVA] Math.random 메소드 (0) | 2024.09.03 |
| [JAVA] 연산의 방향과 우선순위 (0) | 2024.09.03 |
| [JAVA] 삼항(조건) 연산자 (0) | 2024.09.03 |
| [JAVA] 대입 연산자 (0) | 2024.09.03 |