프로그래밍 언어/JAVA

조건문

· 코딩마이데이

조건문을 이용하면 조건의 참, 거짓에 따라 서로 다른 작업을 수행할 수 있습니다.

if 문, if~else 문, switch 문

 

단순 if 문

단순 if 문의 모양과 실행 과정은 다음과 같습니다.

if (조건식) {
	... 실행 문장 ... // 조건식이 참인 경우
}

 

if문 실행 과정

 

if 문의 조건식은 비교 연산이나 논리 연산이 혼합된 식으로 구성되며, 조건식의 결과는 boolean입니다.

조건식의 참(true)이면 if 내부의 '실행 문장'이 실행되며, 거짓(false)이면 if문을 벗어납니다.

 

if (n % 2 == 0) {
	System.out.println(n + "은 짝수 입니다");
}

 

if ((score >= 80) && (score <= 89)) {
	System.out.println("학점은 B입니다.");
}

 

if의 실행문의 한 문장의 경우 다음과 같이 중괄호({})를 생략해도 됩니다.

if ((score >= 80) && (score <= 89))
	System.out.println("학점은 B입니다");

 

if 문 활용

import java.util.Scanner;

public class SuccessOrFail {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("점수를 입력하시오: ");
        int score = scanner.nextInt();
        if (score >= 80) {
            System.out.println("축하합니다! 합격입니다.");
        }
        scanner.close();
    }
}

 

실행결과

점수를 입력하시오: 95
축하합니다! 합격입니다.

 

if~else 문

if의 조건식이 참인 경우에 각각 실핼할 문장을 지시할 수 있습니다.

if (조건식) {
	...실행 문장1...
}
else {
	...실핼 문장2...
}

 

if ~ else 실행 과정

 

 

if (n % 2 == 0) {
	System.out.println(n + "은 짝수입니다.");
}
else {
	System.out.println(n + "은 홀수입니다.");
}

 

if ~ else 활용

import java.util.Scanner;

public class MultipleOfThree {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("수를 입력하세요: ");
        int number = scanner.nextInt(); // 정수를 입력받는다.
        if (number % 3 == 0) // 3으로 나눈 나머지가 0인지 검사
            System.out.println("3의 배수입니다.");
        else
            System.out.println("3의 배수가 아닙니다.");
        
        scanner.close();
    }
}

 

실행결과

수를 입력하세요: 129
3의 배수입니다.

 

다중 if ~ else 문

 

if ~ else 가 연속되는 것입니다.

위에서부터 '조건식'이 참인 경우, 해당하는 '실행 문장'을 실행한 후 다중 if ~ else을 벗어납니다.

if (조건식 1) {
	실행 문장 1; // 조건식 1이 참인 경우
}
else if (조건식 2) {
	실행 문장 2; // 조건식 2가 참인 경우
}
else if (조건식 m) {
	............... // 조건식 m이 참인 경우
}
else {
	실핼 문장 n; // 앞의 모든 조건이 거짓인 경우
}

 

다중 if ~ else 문 실행 과정

 

다중 if ~ else로 학점 매기기

import java.util.Scanner;

public class Grading {
    public static void main(String[] args) {
        char grade;
        Scanner scanner = new Scanner(System.in);

        System.out.print("점수를 입력하시오(0~100): ");
        int score = scanner.nextInt(); // 점수 읽기
        if (score >= 90) { // score 90 이상
            grade = 'A';
        }
        else if (score >= 80) { // score 80 이상 90미만
            grade = 'B';
        }
        else if (score >= 70) { // score 70 이상 80 미만
            grade = 'C';
        }
        else if (score >= 60) { // score 60 이상 70 미만
            grade = 'D';
        }
        else // score 60 미만
            grade = 'F';
        System.out.println("학점은 " + grade + "입니다.");

        scanner.close();
    }
}

 

실행 결과

점수를 입력하시오(0~100): 89
학점은 B입니다.

 

중첩 if ~ else 문

if 문이나 if-else 문, else 문의 '실행 문장'에, if 문이나 if-else 문을 내포할 수 있습니다.

 

중첩 if - else 문 사례

import java.util.Scanner;

public class NestedIf {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("점수를 입력하세요(0~100): ");
        int score = scanner.nextInt(); // 점수 읽기
        System.out.print("학년을 입력하세요(1~4): ");
        int year = scanner.nextInt(); // 학년 읽기

        if (score >= 60) { // 60점 이상
            if (year != 4)
                System.out.println("합격!"); // 4학년 아니면 합격
            else if (score >= 70)
                System.out.println("합격!"); // 4학년이 70졈 이상이면 합격
            else
                System.out.println("불합격!"); // 4학년이 70점 미만이면 불합격
        }
        else // 60점 미만 불합격
            System.out.println("불합격!");

        scanner.close();
    }
}

 

실행 결과

점수를 입력하세요(0~100): 65
학년을 입력하세요(1~4): 4
불합격!

 

switch 문

값에 따라 여러 방향으로 분기하는 경우, if 문보다 switch 문을 사용하면 가독성이 좋은 코드를 작성할 수 있습니다.

switch (식) {
	case 값1:
 		실행 문장 1;
		break;
	case 값2:
		실행 문장 2;
		break;
	...
	case 값3:
		실행 문장 m;
		break;
	default:
		실행 문장 n;

 

switch 문 실행 과정

 

switch 문은 먼저 '식'을 계산하고 그 결과 값과 일치하는 case 문으로 분기합니다.

case 문의 '실행 문장'을 실행한 후 break를 만나면 switch 문을 벗어납니다.

만일 case 문으로도 분기하지 못하는 경우 default 문으로 분기하여 '실행 문장 n'을 실행합니다.

default 문은 생략 가능하며, 실행 '{'와 '}'로 둘러싸지 않습니다.

 

switch 문으로 학점 매기기

import java.util.Scanner;

public class GradingSwitch {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        char grade;
        System.out.print("점수를 입력하세요(0~100): ");
        int score = scanner.nextInt(); // 점수
        switch (score / 10) {
            case 10: // score = 100
            case 9: // score는 90 ~ 99
                grade = 'A';
                break;
            case 8: // score는 80~89
                grade = 'B';
                break;
            case 7: // score는 70~79
                grade = 'C';
                break;
            case 6:
                grade = 'D';
                break;
            default: // score는 59이하
                grade = 'F';
        }
        System.out.println("학점은 " + grade + "입니다");

        scanner.close();
    }
}

 

실행 결과

점수를 입력하세요(0~100): 89
학점은 B입니다

 

switch 문 내의 break 문

switch 문에서 break 문은 중요합니다.

case의 '실행 문장'이 실행되고 만난 break 문장은 switch 문을 벗어나도록 지시합니다. 만일 case 문에 break 문이 없다면 break 문이 없다면 break을 만날 때까지 case 문의 '실행 문장'으로 계속 실행합니다.

switch 문에서 break가 생략된 경우

 

case 문의 값

switch 문의 식의 결과 값을 case 문의 값과 비교합니다. case 문의 값은 정수 리터럴, 문자 리터럴, 문자열 리터럴만 허용합니다.

int b;
switch (b % 2) {
	case 1:
 		...;
		break;
	case 2:
		...;
		break;
 }
 char c;
 switch (c) {
 	case '+': ...; break;
	case '-': ...; break;
}
String s = "예";
switch (s) {
	case "예": ...; break;
	case "아니요": ...; break;
}

 

int b;
switch (b) {
	case a: ...; break; // 오류. 변수 a의 사용 안 됨
	case a > 3: ...; break; // 오류. 식(a > 3) 사용 안 됨
	case a == 1: ...; break; // 오류. 식(a == 1) 사용 안 됨
}

 

switch 문 활용

import java.util.Scanner;

public class CoffeePrice {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("무슨 커피 드릴까요? ");
        String order = scanner.next(); // 주문 읽기
        int price = 0;
        switch (order) {
            case "에스프레스":
            case "카푸치노":
            case "카페라떼":
                price = 3500; break;
            case "아메리카노":
                price = 2000; break;
            default:
                System.out.println("메뉴에 없습니다!");
        }
        if (price != 0) System.out.print(order + "는 " + price + "원입니다");
        scanner.close();
    }
}

 

실행 결과

무슨 커피 드릴까요? 에스프레스
에스프레스는 3500원입니다

'프로그래밍 언어 > JAVA' 카테고리의 다른 글

continue문과 break 문  (1) 2025.01.25
반복문  (0) 2025.01.24
연산  (0) 2025.01.22
자바에서 키 입력  (0) 2025.01.21
자바 데이터 타입  (1) 2025.01.20