조건문

쌩 초보의 개발로그·2022년 4월 13일
0

자바 공부

목록 보기
9/10
post-thumbnail

조건문

조건문이란? : 주어진 조건에 따라서 애플리케이션을 다르게 동작하도록 하는 것으로 프로그래밍의 핵심 중 하나이다.

if

조건문은 if 로 시작한다.

if( true or false ) {   // if 절
          // then 절 (true라면 실행)
}         // (false라면 then이 실행되지않고 여기로 넘어간다)

if 절이 true라면 then 절이 실행이 되고 if 절이 false라면 then 절이 실행 되지않고 넘어가게 된다.

if 절을 사용할때는 여러가지의 조건을 주어 조건문을 확인 할 수 있지만 가장 기본적인 true와 false를 통해 예제를 알아보자.

public static void main(String[] args) {
        if(true){
            System.out.println("이것은 if절이다.");
        }
    }

위의 예제를 실행을 하게 되면 "이것은 if절이다" 가 콘솔에 출력이 되게 된다.

만약 if가 (false)의 값을 가지고 있다면 "이것은 if절이다" 이다가 출력되지 않고 아무것도 나오지 않을 것이다.

public static void main(String[] args) {
        if(true){
            System.out.println(1);
            System.out.println(2);
            System.out.println(3);
            System.out.println(4);
        }
        System.out.println(5);
    }

위 코드를 실행하면 콘솔에 1, 2, 3, 4, 5가 전부 출력이 될것이다. if가 true이기 때문에 1, 2, 3, 4까지 정상 출력이 되고 그 다음 로직인 5까지 정상적으로 출력이 된다.

만약 if(false) 라면 1, 2, 3, 4가 출력이 되지않고 넘어가서 5만 출력이 되는것을 확인 할 수 있다.

else

if 만으론 좀 더 복잡한 조건을 주어 상황을 정리, 처리하는데 부족하다. 그래서 if - else를 사용해서 true일땐 if를 false일땐 else절이 실행이 된다.

if(true){  // if절
           // true 일때 then절이 실행
} else {   // if가 false라면
 (false)   // else 가 실행이 된다.
}

그러면 예제로 한번 살펴보자.

public static void main(String[] args) {
        if(true){
            System.out.println(1);
        } else {
            System.out.println(2);
        }
    }

예제를 실행하면 if 가 true 이기 때문에 1이 출력이 되고 2는 출력이 되지않는다.

if 가 false라면 1이 아니라 2가 출력이 될것이다.

else if

else if 절을 사용하면 조건문의 흐름을 더 자유롭고 편하게 제어할 수 있다.
if 절의 값이 true라면 then 절이 실행된다.
false 라면 else if 절로 제어가 넘어간다. else if 절의 값이 true라면 else if then 절이 실행된다.
false 라면 else절로 넘어가 실행이 되게 된다. else if절은 여러 개가 복수로 등장할 수 있고, else 절은 생략이 가능하다.
else 절은 else if 앞에 위치할 수 없다.

if( ) {          // if절이 true면
                 // then 절이 실행되고 false 라면
} else if( ) {   // else if 절로 제어가 넘어와 true 라면
                 // else if then 절에 실행이 되고 false 라면
} else {         // 여기 else 절이 실행된다.

}

그러면 예제 코드로 살펴보자

public static void main(String[] args) {
        if(false){
            System.out.println(1);
        } else if(false) {
            System.out.println(2);
        } else if(true) {
            System.out.println(3);
        } else {
                System.out.println(4);
            }
        }

위를 실행하면 3이 실행되게 된다. 3이 출력이 되기 때문에 이 if 절은 종료가 되며 마지막 else절은 실행이 되지않는다.

모든 else if 절이 false 라면 else 절로 빠져 나가 4가 나오게 될 것이다.

변수와 비교연산자 그리고 조건문

위에서 배운걸로 변수와 비교연산자 그리고 조건문을 사용해 로직을 하나 작성해보자.

public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String id = br.readLine();
        
        if(id.equals("Apple")){
            System.out.println("right");
        } else {
            System.out.println("Wrong");
        }
        }

BufferedReader 를 사용해 입력을 받고 (Scanner로 사용해도 된다.) id를 Apple을 입력을 하게 된다면 right이 나오고 Apple이 아닌 다른 id 를 작성하면 Wrong이 나오게 된다.

조건문의 중첩

if는 중첩을 해서 여러가지의 조건을 주어줄 수 있다. 그러면 여러가지 조건 중첩을 어떻게 해야할까? 예시로 살펴보자.

public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] str = br.readLine().split(" ");
        String id = str[0];
        String pw = str[1];

        if (id.equals("Apple")){
            if (pw.equals("12345")){
                System.out.println("로그인 완료");
            } else {
                System.out.println("정보 오류");
            } } else {
                System.out.println("접근 불가");
            }
        }
        }

위의 예시를 보면 BufferedReader 를 사용해 String[] 으로 배열을 주었다. 그리고 입력되는 정보를 받아드리는 br.readline()에 split(" ") 를 사용하여 공백으로 정보를 나누었다.

그 후에 if 문을 살펴본다면 id는 Apple, password는 12345 가 되어야지 "로그인 완료"라는 글이 뜨게 된다.

근데 만약 id나 password가 둘 중 하나는 맞고 하나가 틀리다면 "정보 오류" 가 뜨게 되는 것을 볼 수 있고,

두개의 if문이 전부 다 false 즉, 둘 다 틀렸다면 "접근 불가" 가 나는것을 볼 수 있다.

이런식으로 if문을 중첩해서 여러가지 조건을 주어 사용할 수 있다.

Switch문

조건문의 대표격이자 가장 많이 사용되는 조건문은 if이다. 하지만 조건이 많다면 switch문이 로직을 보다 명료하게 보여줄 수 있다.

public static void main(String[] args) throws IOException {

        System.out.println("Switch (1)");
        switch (1){
            case 1:
                System.out.println("one");
            case 2:
                System.out.println("two");
            case 3:
                System.out.println("three");
        }
        System.out.println("Switch (2)");
        switch (2){
            case 1:
                System.out.println("one");
            case 2:
                System.out.println("two");
            case 3:
                System.out.println("three");
        }
        System.out.println("Switch (3)");
        switch (3){
            case 1:
                System.out.println("one");
            case 2:
                System.out.println("two");
            case 3:
                System.out.println("three");
        }

    }

코드를 살펴보면 switch (조건) { } 으로 로직문이 이루어져 있는것을 확인 할 수 있다.

예시 코드를 보면 switch(1) 은 조건이 1로 설정이 되어있기 때문에 case 1: 이후부터의 모든 로직문이 전부 실행되고 그 다음 (2)를 보면 2부터 로직문이 실행되는 것을 볼 수 있다.

이 처럼 조건이 많고 로직이 길어질때 switch문을 사용하면 확인이 명료해진다.

그러면 switch(1) 에서는 case 1까지만 실행을 하고 싶을 때에는 어떻게 해야할까?

(맞춰진 조건에서만 출력이 되게끔 하는 로직)

public static void main(String[] args) throws IOException {

        System.out.println("Switch (1)");
        switch (1){
            case 1:
                System.out.println("one");
                break; 
            case 2:
                System.out.println("two");
                break;
            case 3:
                System.out.println("three");
                break;
        }
        System.out.println("Switch (2)");
        switch (2){
            case 1:
                System.out.println("one");
                break;
            case 2:
                System.out.println("two");
                break;
            case 3:
                System.out.println("three");
                break;
        }
        System.out.println("Switch (3)");
        switch (3){
            case 1:
                System.out.println("one");
                break;
            case 2:
                System.out.println("two");
                break;
            case 3:
                System.out.println("three");
                break;
        }

    }

위의 코드처럼 break; 를 사용해 정해진 조건문에서 해당하는 조건이 실행이 된다면 딱 그 조건까지만 실행이 되고 멈춘 다음 다음 switch문으로 넘어가는것을 볼 수 있다. (break를 만나면 switch문의 실행이 즉각 중지된다.)

위의 로직을 if문으로 바꿀수 있다.

public static void main(String[] args) throws IOException {

        int val = 1;
        if(val == 1){
            System.out.println("one");
        } else if(val == 2){
            System.out.println("two");
        } else if(val == 2){
            System.out.println("three");
        }

    }

위 처럼 switch문을 if 문으로 작성 할 수 있다.

또한 스위치문에서는 default: 라는 것을 설정 할 수 있다.

public static void main(String[] args) throws IOException {
        System.out.println("switch(4)");
        switch (4){
            case 1:
                System.out.println("1");
                break;
            case 2:
                System.out.println("2");
                break;
            case 3:
                System.out.println("3");
                break;
            default:
                System.out.println("default");
                break;
        }
}

위 처럼 주어진 조건에 case가 없으면 default 값을 작성해 출력이 가능하다.

if문은 중요하고 자주 쓰기 때문에 공부를 여러번 반복해서 해보자.

profile
안녕하세요 쌩 초보 장휘주 입니다. 열심히 하는 개발자가 될게요.

0개의 댓글