한화시스템/백엔드

[BE] JAVA_조건문

jjam-mo 2024. 7. 13. 15:46

1. 조건문 개요

1-1. 조건문이란?

💡"조건식"을 통해 특정 코드를 실행할지 말지를 제어해주는 구문
특정 조건식의 결과가 참이라면 조건문 내부의 코드를 실행한다. 조건식은
true, false같이 boolean형 타입을 반환해주는 식

1-2. 조건문 종류

💡 조건문은 크게 2가지 if 문과 switch 문으로 분류된다.
if문은 if 문, if-else 문, if-else if 문으로 나뉜다.

/* 실행하기 위한 main 클래스 */

package com.ohgiraffers.section01.conditional;

public class Application {
    public static void main(String[] args) {

        A_if aClass = new A_if();

        /* 설명. 단독 if문 흐름 확인용 메소드 호출 */
        aClass.testSimpleIfStatement();

        /* 설명. 중첩 if문 흐름 확인용 메소드 호출 */
        aClass.testNestedIfStatement();

        B_ifElse bClass = new B_ifElse();

        /* 설명. 단독 if-else문 흐름 확인용 메소드 호출 */
        bClass.testSimpleIfElseStatement();

        /* 설명. 중첩 if-else문 흐름 학인용 메소드 호출 */
        bClass.testNestedIfElseStatement();

        C_ifElseIf cClass = new C_ifElseIf();

        /* 설명. 단순 if-else if문 흐름 확인용 메소드 호출 */
        cClass.testSimpleIfElseIfStatement();

        /* 설명. 중첩 if-else if문 흐름 확인용 메소드 호출 */
        cClass.testNestedIfElseIfstatement();

        /* 설명. switch문 흐름 확인용 메소드 호출 */
        D_switch.testSimpleSwitchStatement();
    }
}

 

2. if 문 개요

2-1. if 문 표현식

if (조건식) {
    수행문;
    ...
}
package com.ohgiraffers.section01.conditional;

import java.util.Scanner;

public class A_if {

    public void testSimpleIfStatement() {

        Scanner sc = new Scanner(System.in);

        System.out.print("정수 한 개를 입력하세요: ");
        int input = sc.nextInt();
        
//        psudo 코드
//        만약에(입력받은 값이 짝수면) {
//            "짝수입니다"라고 출력한다.
//        }

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

    public void testNestedIfStatement() {

        Scanner sc = new Scanner(System.in);

        System.out.print("양수 하나를 입력해 주세요: ");
        int input = sc.nextInt();
        if (input > 0) {
            if (input % 2 != 0) {
                System.out.println("입력받은 값은 양수이면서 홀수입니다.");
            }
        }

        if (input > 0 && input % 2 == 1) {
            System.out.println("이것도 양수이면서 홀수인지 판별됨");
        }
    }
}

3. if-else 문 개요

3-1. if-else 문 표현식

if (조건식) {
    조건식이 true 일 때 실행되는 수행문;
    ...
} else {
    조건식이 false 일 때 실행되는 수행문;
		...
}
package com.ohgiraffers.section01.conditional;

import java.util.Scanner;

public class B_ifElse {
    public void testSimpleIfElseStatement() {

        Scanner sc = new Scanner(System.in);

        System.out.print("정수를 하나 입력하세요: ");
        int input = sc.nextInt();

//        만약에(홀수라면) {
//            "입력하신 정수는 홀수입니다." 라면
//        } 그밖에 {
//            "입력하신 정수는 짝수입니다." 출력
//        }

        if (input % 2 != 0) {
            System.out.println("입력하신 정수는 홀수입니다.");
        } else {
            System.out.println("입력하신 정수는 짝수입니다.");
        }
    }

    public void testNestedIfElseStatement() {
        Scanner sc = new Scanner(System.in);

        System.out.print("정수를 하나 입력하세요: ");

        /* 설명. 정수를 하나 입력받아 양수와 음수를 구분하고 양수일 때만 짝수인지 아닌지 판별한다.(각 상태 모두 출력) */
        int input = sc.nextInt();
        if (input >= 0) {
            if (input % 2 == 0) {
                System.out.println("양수이면서 짝수입니다.");
            } else {
                System.out.println("양수이면서 홀수입니다.");
            }
        } else {
            System.out.println("양수가 아닌 경우(음수인 경우)");
        }
    }
}

4. if-elseif 문 개요

4-1. if-elseif 문 표현식

if (조건식1) {
    수행문;
    ...
} else if(조건식2) {
		수행문;
		...
} else {
		수행문;
		...
}
package com.ohgiraffers.section01.conditional;

import java.util.Scanner;

public class C_ifElseIf {

    public void testSimpleIfElseIfStatement() {
        System.out.println("산 속에서 나무를 하면서 나무꾼이 연못에 도끼를 빠뜨리고 말았다.");
        System.out.println("연못에서 산신령이 나타나 금도끼, 은도끼, 쇠도끼를 들고 나타났다.");
        System.out.println("나무꾼에게 셋 중 어떤 도끼가 나무꾼의 도끼인지 몰어보았다.");

        System.out.print("어느 도끼가 너의 도끼이냐? (1. 금도끼, 2. 은도끼, 3. 쇠도끼):");

        Scanner sc = new Scanner(System.in);
        int answer = sc.nextInt();

        if (answer == 1) {
            System.out.println("이런 거짓말쟁이!! 너에게는 아무런 도끼도 줄 수 없구나!! 이 욕심쟁이야!!");
        } else if (answer == 2) {
            System.out.println("욕심이 과하지는 않지만 그래도 넌 거짓말을 하고 있구나!! 썩 꺼지거라!!");
        } else {
            System.out.println("오호~ 정직하구나~ 여기 있는 금도끼, 은도끼, 쇠도끼를 다 가져가거라!");
        }

        System.out.println("그렇게 산신령은 다시 연못 속으로 홀연히 사라지고 말았다...");
    }

    public void testNestedIfElseIfstatement() {

        /* 설명.
         *  ohgiraffers 대학의 김XX 교수님은 학생들 시험 성적을 수기로 계산해서 학점 등급을 매기는
         *  채점방식을 사용하고 있다.
         *  90점 이상이면 'A', 80점 이상이면 'B', 70점 이상이면 'C', 60점 이상이면 'D', 마지막으로
         *  60점 미만인 경우에는 'F'를 학점으로 주게 된다.
         *  그래서 학생의 이름과 점수를 입력하면 자동으로 학점 등급이 계산되는 프로그램을 만들기로 했다.
         *  (추가로, 각 등급의 중간점수(95, 85, 75...) 이상인 경우 '+'를 붙여서 등급을 세분화 해보자.)
         *
         *  설명.
         *   출력 예시: XXX 학생의 점수는 86점이고, 등급은 B+입니다.
         *            프로그램을 종료합니다.
         *  */

        Scanner sc = new Scanner(System.in);
        System.out.print("학생의 이름: ");
        String name = sc.nextLine();
        System.out.print("학생의 성적: ");
        int point = sc.nextInt();

//        if (point >= 90) {
//            if (point >= 95) {
//                System.out.println(name + " 학생의 점수는 " + point + " 점이고, 등급은 A+입니다.");
//                System.out.println("프로그램을 종료합니다.");
//            } else {
//                System.out.println(name + " 학생의 점수는 " + point + " 점이고, 등급은 A입니다.");
//                System.out.println("프로그램을 종료합니다.");
//            }
//        } else if (point >= 80) {
//            if (point >= 85) {
//                System.out.println(name + " 학생의 점수는 " + point + " 점이고, 등급은 B+입니다.");
//                System.out.println("프로그램을 종료합니다.");
//            } else {
//                System.out.println(name + " 학생의 점수는 " + point + " 점이고, 등급은 B입니다.");
//                System.out.println("프로그램을 종료합니다.");
//            }
//        } else if (point >= 70) {
//            if (point >= 75) {
//                System.out.println(name + " 학생의 점수는 " + point + " 점이고, 등급은 C+입니다.");
//                System.out.println("프로그램을 종료합니다.");
//            } else {
//                System.out.println(name + " 학생의 점수는 " + point + " 점이고, 등급은 C입니다.");
//                System.out.println("프로그램을 종료합니다.");
//            }
//        } else if (point >= 60) {
//            if (point >= 65) {
//                System.out.println(name + " 학생의 점수는 " + point + " 점이고, 등급은 D+입니다.");
//                System.out.println("프로그램을 종료합니다.");
//            } else {
//                System.out.println(name + " 학생의 점수는 " + point + " 점이고, 등급은 D입니다.");
//                System.out.println("프로그램을 종료합니다.");
//            }
//        } else {
//            System.out.println(name + " 학생의 점수는 " + point + " 점이고, 등급은 F입니다.");
//            System.out.println("프로그램을 종료합니다.");
//        }
//        String grade = "";
//
//        if (point >= 90) {
//            if (point >= 95) {
//                grade = "A+";
//            } else {
//                grade = "A";
//            }
//        } else if (point >= 80) {
//            if (point >= 85) {
//                grade = "B+";
//            } else {
//                grade = "B";
//            }
//        } else if (point >= 70) {
//            if (point >= 75) {
//                grade = "C+";
//            } else {
//                grade = "C";
//            }
//        } else if (point >= 60) {
//            if (point >= 65) {
//                grade = "D+";
//            } else {
//                grade = "D";
//            }
//        } else {
//            grade = "F";
//        }
//        System.out.println(name + " 학생의 점수는 " + point + " 점이고, 등급은 " + grade + " 입니다.");
//        System.out.println("프로그램을 종료합니다.");

        // 선생님 코드
        String grade = "";
        if (point >= 90) {
            grade = "A";
        } else if (point >= 80) {
            grade = "B";
        } else if (point >= 70) {
            grade = "C";
        } else if (point >= 60) {
            grade = "D";
        } else {
            grade = "F";
        }

        if (point == 100 || (point % 10 >= 5 && point >= 60)) {
            grade += "+";
        }

        System.out.println(name + " 학생의 점수는 " + point + " 점이고, 등급은 " + grade + " 입니다.");
        System.out.println("프로그램을 종료합니다.");
    }
}

5. switch 문 개요

5-1. switch 문 표현식

switch(비교할변수) {

		case 비교값1 : 
						비교값1과 일치하는 경우 실행할 구문; 
						break;
		case 비교값2 : 
						비교값2와 일치하는 경우 실행할 구문; 
						break;
		default : 
						case에 모두 해당하지 않는 경우 실행할 구문; 
						break;
}
package com.ohgiraffers.section01.conditional;

import java.util.Scanner;

public class D_switch {
    public static void testSimpleSwitchStatement() {

        // 어떤 관점인지가 중요!
        Scanner sc = new Scanner(System.in);

        System.out.print("등급을 입력하세요(G, S, B): ");
        char grade = sc.next().charAt(0);

        int point = 0;
        boolean flag = true;

        switch (grade) {
            case 'G': point += 10;
            case 'S': point += 10;
            case 'B': point += 10;
                      break;
            default:
                flag = false;
                System.out.println("똑바로 입력 좀 합세!~");
        }

        /* 설명. G/S/B 중에 하나를 입력하면 해당 등급의 point를 보여주고 그렇지 않으면 회원가입 유도 */
//        if (grade == 'G' || grade == 'S' || grade == 'B') {
        if (flag) {
            System.out.println("당신의 등급은 " + grade + "이며, 현재 포인트는 " + point + "입니다.");
        } else {
            System.out.println("그럼 이참에 회원가입 고고씽!");
        }

    }
}