🎨 Programming/JAVA

[JAVA] 6. 조건문( if문 / switch문)

ryang x2 2020. 6. 13. 01:20
728x90
반응형

프로그램 흐름을 제어할 수 있는 제어문 종류는 두가지(조건문/반복문) 이 있다. 

 

#조건문 

조건을 제시하고 그 조건이 맞냐 틀리냐 선택하거나 조건 중에서 하나를 선택 하는 것

 

if문 

1. 조건문의 정의 

조건문이란, 조건을 판단하여 조건에 맞게 상황을 수행하는데 쓰이는 문장이다. 

조건식은 true 아니면  false 문장의 결과만 나온다.(boolean형) 

 

 

2. if문 사용방법

if(조건식) { 

                조건식이 true인 경우 실행할 문장;

}

 

 

3. if 문 특징

if 문에서 중괄호 ({})는 반드시 사용해야 하는 것은 아니다!!! 

if 중괄호의 경우 두 문장을 묶어주는 역할이다. 한줄만 사용할 경우 사용하지 않아도 되므로 필수적인 부분은 아니다.

조건식이 만족하든 만족하지 않든 다음문장에  ;(세미콜론) 을 만나는 부분까지 이다. 

true 일때에는 앞에 ;(세미콜론) 확인 / false일 때는 뒤에 있는 ;(세미콜론) 확인

 

● 논리 연산자 / 비교 연산자를 조건문에서 사용가능하다. 

 true면 실행 false면 밖으로 빠져나온다. 재실행 하지 않는다.! 

 

 

3. if문 예시

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("나이를 입력하세요.");
        int age = sc.nextInt();
        if(age >= 19){
            System.out.println("성인입니다.");
        }
        System.out.println("프로그램을 종료합니다.");
    }

좌측 > if 문 true일 경우 실행되는 결과 // 우측 >  if 문 false일 경우 실행되는 결과 

 

 

if - esle문 

1. if - esle문 사용 방법

if(조건식) {

                    조건식이 true인 경우 실행 할 문장; 

} esle {

                    조건식이 false인 경우 실행 할 문장;

}

★ 해당 부분 중괄호 역시 필수적인 부분이 아니다! 

 

 

2. if - else문 예시 

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("나이를 입력하세요.");
        int age = sc.nextInt();
        if(age >= 19) System.out.println("성인입니다.");
        else System.out.println("미성년자입니다.");
    }

좌측 > if 문 true일 경우 실행되는 결과  //  우측 >  if 문 false일 경우 실행되는 결과

 

#if - esle if - else 문 

1. if - esle if - else 문 사용 방법

if (조건식1) {

                    조건식1이 true인 경우 실행 할 문장; 

} else if (조건식2) {

                    조건식2이 true인 경우 실행 할 문장; 

} esle {

 

                    조건식 1,2 모두가 false인 경우 실행 할 문장;

}

★ else if는 여러개 써도 상관없다.

★ esle 문은 무조건 쓰는 건 아니다. (필요에 따라서)

 

 

2. if - else if - else 문 예시 

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("나이를 입력하세요.");
        int age = sc.nextInt();
        if(age >= 19) {
            System.out.println("성인입니다.");
        }else if(age >= 14){
            System.out.println("청소년입니다.");
        }else if(age >= 7){
            System.out.println("어린이입니다.");
        }else{
            System.out.println("유아입니다.");
        }
    }

if문 조건문에 따라서 나이를 입력하였을때 해당되는 결과를 나타낸다.

 

 

#상위 배운 내용들을 정리하는 문제를 풀어보자!    

  • 문제

이름, 자바, HTML, CSS, 자바스크립트 점수를 입력받아 아래와 같이 출력하는 프로그램을 작성
(단, 학점은 평균을 기준으로 90점이상 A학점, 80점이상 B학점, 70점이상 C학점, 60점이상 D 학점, 나머지 F 학점 입니다)

 

입력)
이름을 입력하세요. 홍길동
자바점수를 입력하세요. 100
HTM점수를 입력하세요. 80
CSS점수를 입력하세요. 60
자바스크립트 점수를 입력하세요. 70

결과)
홍길동님의 성적입니다.
자바 : 100점
HTML : 80점
CSS : 60점
자바스크립트 : 70점
총점 : XX점
평균 : XX점
학점 : X

 

  • 해설 ( 많은 방법이 있다 해당 방법은 여태 배운걸 토대로 기초하여 만드는 것임 ) 

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("이름을 입력하세요.");
        String name = sc.nextLine();
        System.out.println("자바 점수를 입력하세요.");
        int java1 = sc.nextInt();
        System.out.println("HTML 점수를 입력하세요.");
        int html1 = sc.nextInt();
        System.out.println("CSS 점수를 입력하세요.");
        int css1 = sc.nextInt();
        System.out.println("자바스크립트 점수를 입력하세요.");
        int js1 = sc.nextInt();
        
        int tot = java1 + html1 + css1 + js1; 
        int avg = tot / 4;

        System.out.println(name + "님의 성적입니다.");
        System.out.println("자바 : " + java1 + "점");
        System.out.println("HTML : " + html1 + "점");
        System.out.println("CSS : " + css1 + "점");
        System.out.println("자바스크립트 : " + js1 + "점");
        System.out.println("총점 : " + tot + "점");
        System.out.println("평균 : " + avg + "점");
        
        if (avg >= 90) {
            System.out.println("학점 : A");
        }else if(avg >= 80){
            System.out.println("학점 : B");
        }else if(avg >= 70){
            System.out.println("학점 : C");
        }else if(avg >= 60){
            System.out.println("학점 : D");
        }else{
            System.out.println("학점 : F");
        }
    }

결과값

 

 

switch 문 

1. switch 문 사용방법 

switch(변수) {
        case 값 1 :
            변수가 값 1일 경우 실행할 문장 ;
                break;
        case 값 2 :
            변수가 값 2일 경우 실행할 문장 ;
                break;
        default:
            변수가 case 값과 일치되지 않을 경우 실행할 문장;
        }

 

 

2. switch 문 특징

- ()괄호 안에는 if문과는 다르게 범위가 아닌 변수를 넣어준다. 변수값이 일치하는 것은 case 에서 찾는다.

- 어떠한 변수랑 일치하게 되면 변수를 실행하고 break를 만나면 빠져나간다. (default  맨 마지막 뒤 break는 생략가능)

- break 도 if 의 중괄호와 같이 필수적인 요소는 아니며 필요에 의해 사용된다.

break가 없는경우는 case가 해당되는 부분부터  하위단의 결과값이 모두 실행된다. 그렇다고 무조건 break 를 실행하는건 아니다.

하위 예시의 경우  case 10: case9: 는 결과값이 같기 때문에 겹쳐 쓰는 것이 가능.

 

★ 차이점)))) if 문 같은 경우는 범위를 주는 것이고 switch는 일치하는것을 찾는것이다.

- if / switch와 같이 쓸 수 있는 입장일 경우, switch를 쓰는 것이 코딩할 때 편하고 낫다 ( if문보다 약 6배정도 빠르다함 )

 

 

3. switch 문 예시 (이전 if문 문제를 다시 불러와 switch로 바꿔본다!) 

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("이름을 입력하세요.");
        String name = sc.nextLine();
        System.out.println("자바 점수를 입력하세요.");
        int java1 = sc.nextInt();
        System.out.println("HTML 점수를 입력하세요.");
        int html1 = sc.nextInt();
        System.out.println("CSS 점수를 입력하세요.");
        int css1 = sc.nextInt();
        System.out.println("자바스크립트 점수를 입력하세요.");
        int js1 = sc.nextInt();

        int tot = java1 + html1 + css1 + js1;
        int avg = tot / 4;

        System.out.println(name + "님의 성적입니다.");
        System.out.println("자바 : " + java1 + "점");
        System.out.println("HTML : " + html1 + "점");
        System.out.println("CSS : " + css1 + "점");
        System.out.println("자바스크립트 : " + js1 + "점");
        System.out.println("총점 : " + tot + "점");
        System.out.println("평균 : " + avg + "점");

        switch (avg/10){
            case 10: case 9:
                System.out.println("학점 : A");
            case 8:
                System.out.println("학점 : B");
            case 7:
                System.out.println("학점 : C");
            case 6:
                System.out.println("학점 : D");
            default:
                System.out.println("학점 : F");
        }
    }

상위 if문과 결과값 동일하기 때문에 생략!

728x90
반응형