Loading...

JAVA / / 2022. 1. 10. 12:43

자바 9강. 조건문

반응형

절차지향 프로그래밍

: 위에서 부터 한줄씩 순서대로 실행

 

순서도를 짜면서 정의하는게 프로그램

 

if, double 같은것들을 키워드라고 하는데

키워드를 예약어라고도 하며, 자바에서 키워드를 만들 때 정한

사용 목적 이외의 용도로는 쓸 수 없다.

즉, 키워드를 사용자가 정의하는 변수나 클래스의 이름으로 사용할 수 없다.

 

int if = 10;

int double = 10;

 

변수의 이름에 키워드를 넣으니 에러가 난다.

 

syntax(문법) 에러

유효하지않은 변수 선언(invalid variable Declaratorid)

 

 

if 문법

 

if(조건문) {                                            

조건문이 true일 때 실행될 내용

   }                                                       

 

자바에서 괄호 뒤에 중괄호가 나오는 형식 : 행위의 영역 표시

package ex06;

public class ConEx01 {
    public static void main(String[] args) {
        int point = 90; // 성적

        if (point >= 90) {
            System.out.println("A학점입니다");
        }
    }
}

   else {                                                    

조건문이 false일 때 실행될 내용

true가 아닐때만 실행되기 때문에

조건이 필요없음

   }                                                       

package ex06;

public class ConEx01 {
    public static void main(String[] args) {
        int point = 90; // 성적

        if (point > 90) {
            System.out.println("A학점입니다");
        } else {
            System.out.println("A학점이 아닙니다");
        }
    }
}

 

 

이 순서도에 맞게 프로그램을 짜면 어떻게 짤 수 있을까?

 

package ex06;

public class ConEx02 {
    public static void main(String[] args) {
        int x = 25;

        if (x < 30) {
            System.err.println("x는 30보다 작습니다.");
        } else {
            System.out.println("x는 30보다 큽니다.");
        }
    }
}

어떤 조건문에서 결과값에 결과가아닌 새로운 조건이 있어야한다면

순서도는 이렇게 될 것이다.

package ex06;

public class ConEx03 {
    public static void main(String[] args) {
        int point = 81;

        // 중첩 if문

        if (point >= 90) {
            System.out.println("A학점입니다.");
        } else {
            if (point >= 80) {
                System.out.println("B학점입니다.");
            } else {
                System.out.println("f학점입니다.");
            }
        }
    }
}

중첩 if문이 이 코드보다 더 많아진다면

if / else가 더 많아져서 코드가 지저분해진다.

이때 else if를 사용한다.

 

else가 "그게 아니면?" 이라는 의미였다면

else if는 "그게 아니라 이거면?" 이라는 의미이다.

 

위의 코드를 else if를 사용하여 바꿔보자.

package ex06;

public class ConEx04 {
    public static void main(String[] args) {
        int point = 81;

        if (point >= 90) {
            System.out.println("A학점 입니다.");
        } else if (point >= 80) { // point가 80 ~ 89 사이라면?
            System.out.println("B학점 입니다.");
        } else if (point >= 70) {
            System.out.println("C학점 입니다.");
        } else if (point >= 60) {
            System.out.println("D학점 입니다.");
        } else {
            System.out.println("F학점 입니다.");
        }
    } // main 끝
}

B학점까지 뿐만 아니라 D학점 까지 조건문을 만들어도 가독성이 훨씬 좋아졌다.

이때 else if를 if문의 중괄호 뒤에 적어줘야한다.

else의 위치와 똑같다.

if의 중괄호가 맞는지 잘 확인하고 쓰자.

 

이렇게 편한 else if를 쓰지않고

중첩 if문을 if와 else만으로 만든다면 어떻게될까?

package ex06;

public class ConEx05 {
    public static void main(String[] args) {
        int point = 81;

        if (point >= 90) {
            System.out.println("A학점 입니다.");
        } else {
            if (point >= 80) {
                System.out.println("B학점 입니다.");
            } else {
                if (point >= 70) {
                    System.out.println("C학점 입니다.");
                } else {
                    if (point >= 60) {
                        System.out.println("D학점 입니다.");
                    } else {
                        System.out.println("F학점 입니다.");
                    }
                }
            }
        }
    }
}

보기에도 힘들고

만들기도 힘들어진다.

 

 

 

[출처]

 

https://cafe.naver.com/metacoding

 

메타코딩 : 네이버 카페

코린이들의 궁금증

cafe.naver.com

메타 코딩 유튜브

https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9

 

메타코딩

문의사항 : getinthere@naver.com 인스타그램 : https://www.instagram.com/meta4pm 깃헙 : https://github.com/codingspecialist 유료강좌 : https://www.easyupclass.com

www.youtube.com

 

반응형