조건문 (Conditions)
조건문이란, 특정 조건에 부합하는 경우에 어떤 코드는 실행시키면서 어떤 코드는 실행시키지 않을 수 있게 해주는 제어문의 일종이다. 조건문은 if문과 switch문이 있다.
if문
if (조건식) {
}
if문의 소괄호 안에는 boolean값(참, 거짓)으로 평가될 수 있는 조건식을 넣어준다. 이후 중괄호 안은 실행 블록이라고 하는데, 조건식이 참일 때 실행되는 코드를 적어주면 된다. 실행 블록 안에는 여러 문장이 들어갈 수도 있다.
if, else if, else문
if (조건식1) {
}
else if (조건식2) {
}
else {
}
이 조건문은 조건식의 결과에 따라 실행 블록을 선택한다. 조건식1이 참이면 선택되지만, 거짓이면 조건식2로 넘어가 다른 블록을 검사한다. if, else if 블록에서 모두 거짓이 나오면 나머지 경우를 의미하는 else 블록이 실행된다.
아래는 연습으로 풀어본 3개의 수를 입력 받아 가장 큰 수를 찾아내는 if문 문제다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("첫번재 숫자를 입력하세요.");
int num1 = scanner.nextInt();
System.out.println("두번재 숫자를 입력하세요.");
int num2 = scanner.nextInt();
System.out.println("세번재 숫자를 입력하세요.");
int num3 = scanner.nextInt();
if ((num1 > num2) && (num1 > num3)) {
System.out.println("가장 큰 숫자는: " + num1);
} else if ((num2 > num1) && (num2 > num3)) {
System.out.println("가장 큰 숫자는: " + num2);
} else if ((num3 > num2) && (num3 > num1)) {
System.out.println("가장 큰 숫자는: " + num3);
} else {
System.out.println("올바른 숫자가 아닙니다.");
}
}
}
switch문
switch (변수) {
case "값1" :
System.out.println("값1");
break;
case "값2" :
System.out.println("값2");
break;
default :
System.out.println("값3");
break;
}
switch문도 if문과 마찬가지로 조건 제어문이나, switch문은 변수가 어떤 값을 갖는지에 따라 실행문이 선택된다. if문의 경우 조건이 무수히 많다고 했을 때 값을 찾기 위해 모든 블록을 검사해야 하지만, switch문은 변수값에 알맞는 실행문이 선택되고 실행된다. 따라서 if문과 같은 기능이지만 코드가 간결해질 수 있다. switch문의 변수로는 int, char, (자바7부터) String 타입의 변수를 사용할 수 있다.
switch문을 작성할 때는 break문을 유의해야 한다. 예를 들어 변수와 값1이 같아서 해당 case를 실행시켰을 때, break문을 작성해주지 않으면 프로그램은 모든 case문을 실행시켜 원하는 결과를 얻지 못하게 된다. (이 현상을 fall through라고 한다.) 따라서 반드시 break문으로 프로그램이 switch문을 빠져나올 수 있도록 해주어야 한다.
아래는 연습으로 풀어본 1~7까지의 수를 입력 받아 그에 해당하는 요일을 반환하는 switch문 문제다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("숫자를 입력하세요.");
int num = scanner.nextInt();
switch(num){
case 1:
System.out.println("월요일");
break;
case 2 :
System.out.println("화요일");
break;
case 3 :
System.out.println("수요일");
break;
case 4 :
System.out.println("목요일");
break;
case 5 :
System.out.println("금요일");
break;
case 6 :
System.out.println("토요일");
break;
case 7 :
System.out.println("일요일");
break;
}
}
}
if문과 같이 비교연산자로 범위 내의 해당하는지 찾는 검사는 어렵다. switch문은 오직 변수와 값이 일치하는지 검사하기 때문이다. 또한 한 switch 블럭 내에 같은 값을 가진 두 개 이상의 case는 있을 수 없다. else문과 비슷한 default문은 선택적으로 넣을 수 있으며 위치도 위~아래 상관이 없다. 그러나 맨 아래에 넣는 것이 통상적이다.
Java Switch Statement
Java Conditional Statement Exercises: Find the greatest of three numbers