Language/Java

조건문

느낌표 공장장 2021. 1. 30. 23:48

if

if (condition is true) {
	do something
}
// ( ) 안에는 boolean 값이 들어가게된다. 참인지 거짓인지에 해당하는 값

else

if문의 조건이 거짓일 경우 동작

if (condition is true) {
	do something
} else {
	do something
}
public class IfHungry {
    public static void main(String[] args) {
        int money = 700;

        if (money >= 800) {
            System.out.println("빵 맛있어 ! ");
        } else {
            System.out.println("돈이 모자라요 ㅠㅠ ");
        }
    }
}

else if

if (condition is true) {
	do something
} else if (another condition) {
	do something
} else {
	do something
}

 ✔︎ 조건문들의 중괄호 블럭들은 모두 서로 배타적이기 때문에 한가지만 실행할 수 있다. (즉, 구문들 중에 첫번째로 조건이 맞는 것만 실행되게 된다.)

public class IfHungry {
    public static void main(String[] args) {
        int money = 850;

        if (money > 800) {
            System.out.println("빵 맛있어 ! 뭘 더 사먹지?");
        } else if (money == 800 ) {
            System.out.println("빵 맛있어 ! 이제 남은 돈이 없네 ?");
        } else {
            System.out.println("돈이 모자라요 ㅠㅠ ");
        }
    }
}

두 조건을 동시에 만족할 때 실행하기

public class NestedIf {
    public static void main(String[] args) {
        int age = 15;

        if (age >= 10) {
            if (age < 20) {
                System.out.println("10대");
            } else {
                System.out.println("10대 아님");
            }
        } else {
            System.out.println("10살 미만");
        }
    }
}

중첩된 if문은 코드가 다소 복잡해 보이는 경우가 있다. 그래서 if문 안에서 두가지 조건을 판단하는 방법이 있다.

public class NestedIf {
    public static void main(String[] args) {
        int age = 15;

        if (age >= 10 && age <20) {
            System.out.println("10대");
        } else {
            System.out.println("10대 아님");
        }
    }
}

 

✔︎ && 연산자

조건이 2가지이기 때문에 4가지의 경우가 있다.

public class NestedIf {
    public static void main(String[] args) {
    
        System.out.println(true && true);
        System.out.println(false && true);
        System.out.println(false && false);
        System.out.println(true && false);
    }
}

양쪽 모두가 true인 경우에만 true가 출력 되는 것을 알 수 있다.


두 조건 중 일부만 만족해도 실행하기

Or(||) 연산자 사용한다.

public class NestedIf {
    public static void main(String[] args) {
	int age = 15
        
        if (age < 10 || age >= 20) {
            System.out.println("10대 아님");
        } else {
            System.out.println("10대");
        }
    }
}

✔︎  || 연산자

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

        System.out.println(true || true);
        System.out.println(false || true);
        System.out.println(false || false);
        System.out.println(true || false);
    }
}


switch-case

if문 이외의 또다른 조건문. switch-case는 if문보다 명확하고 깔끔하게 표현할 수 있다는 장점이 있다.

switch (value) {
    case 값1 :
        value의 값이 값1일 경우 실행될 코드
        break; 
    default :
        일치하는 값이 없을 때 실행될 코드
}

만약 value가 어떤 case의 값을 만족한다고 했을 때, 그 case의 코드가 실행되고 break를 만나면 멈춘다.

여기서 중요한 것은, break를 만나기 전의 구문들을 다 실행한다는 의미이다. 

public class SwitchCase {
    public static void main(String[] args) {
        int month = 3;
        switch (month) {
            case 1:
                System.out.println("January");
                break;
            case 2:
                System.out.println("February");
                break;
            case 3:
                System.out.println("March");
                break;
            default :
                System.out.println("일치하는 값 없음");
        }
    }
}

문자열 비교하기

보통 문자열을 비교한다고 하면 이런 코드를 떠올린다.

import java.util.Scanner;

public class StringCompare {
    public static void main(String[] args) {
        String a = "초밥";
        Scanner scanner = new Scanner(System.in);
        String b = scanner.nextLine();

        System.out.println(a == b);
    }
}

입력 값 : 초밥 / 출력 값 : false

 

둘다 초밥이라는 문자열이었는데 같지 않다고 판단하는 이유는,

자바는 문자열의 같음을 판단할 때, 단순히 글자가 같은지 판단하는 것이 아니기 때문이다.

자바는 문자열과 같은 타입의 비교연산자를 사용할때에 그 값을 직접 비교하는 것이 아니라, 메모리상에서 그 값이 저장되어 있는 위치를 비교하기 때문이다.

( 우리가 a에 저장한 문자열과 표준입력을 통해 입력받은 초밥이라는 문자열은 서로 다른 주소를 가지고 있기 때문에 서로 다르다고 나온 것 )

그렇기 때문에 문자열을 비교할 때에는 비교연산자 == 가 아닌 equals를 이용해야한다.

import java.util.Scanner;

public class StringCompare {
    public static void main(String[] args) {
        // 문자열 비교
        String a = "초밥";
        Scanner scanner = new Scanner(System.in);
        String b = scanner.nextLine();

        System.out.println(a.equals(b));
    }
}

입력 값 : 초밥 / 출력 값 : true


사용자와 상호작용하기

사용자가 입력한 값을 기반으로 조건을 검사하고 상호작용하는 코드 ! 

import java.util.Scanner;

public class Price {
    public static void main(String[] args) {
        // 음식 이름을 입력하면 가격을 출력해주는 프로그램
        System.out.println("메뉴 번호를 입력해주세요.");
        System.out.println("1. 치킨");
        System.out.println("2. 국밥");
        System.out.println("3. 피자");

        Scanner scanner = new Scanner(System.in);
        int menuNumber;

        // 숫자가 아닌 것을 입력했을 때의 예외처리
        try {
           menuNumber = scanner.nextInt();
        } catch (Exception e) {
            menuNumber = -1;
        }

        switch (menuNumber) {
            case 1 :
                System.out.println("치킨은 만원입니다.");
                break;
            case 2 :
                System.out.println("국밥은 오천원입니다.");
                break;
            case 3:
                System.out.println("피자는 이만원입니다.");
                break;
            default :
                System.out.println("올바른 메뉴 번호를 입력해주세요.");
        }
    }
}

 

 

 

유투브 "초간단 자바"님 영상을 통해 공부한 내용입니다 !
www.youtube.com/watch?v=Q9gI7AJ0Y1Q

'Language > Java' 카테고리의 다른 글

배열  (0) 2021.03.31
반복문  (0) 2021.03.30
사용자 입력과 예외 처리  (0) 2021.01.26
데이터의 형태, 자료형  (0) 2021.01.25
연산자  (0) 2021.01.19