[JAVA 문법 종합반 2일차-조건문&반복문]

김동규·2023년 5월 24일
0

조건문 (if, switch)

특정 조건에 따라 다른 연산을 수행할 때

if문

if(조건)
기본적인 조건에 따른 연산을 수행하며 if(조건) {연산} 형태로 사용한다.
if 의 소괄호 ()안의 조건이 boolean값 true를 만족하면 중괄호 {}안의 연산을 수행

boolean flag = true;

if (flag) {
System.out.println("flag 값은 true 입니다.")
}

if(조건)=else
if문 조건이 거짓(false)일 경우 연산을 수행하기 위해 else{연산} 형태로 사용

if의 소괄호 () 안의 조건이 boolean 값 false일 경우 else의 {} 안의 연산 수행

boolean flag = true;

if (flag) {
System.out.println("flag 값은 true 입니다.") // 출력X
} else {
System.out.println("flag 값은 false 입니다.");  // 출력O
}

if(조건) else if(조건)
if 조건이 거짓인 경우 다른 조건을 체크하여 참일 경우 연산을 수행
else if (조건) {연산} 형태로 사용

else if () 안의 조건이 boolean 값 true면 else if 의 중괄호 {}의 연산을 수행

int number = 2;

if (number == 1) {
    System.out.println("number 값은 1 입니다."); // 출력 X
} else if (number == 2) {
    System.out.println("number 값은 2 입니다."); // 출력 O
} else {
    System.out.println("number 값은 모르는 값입니다."); 출력 X

}

중첩 if(조건)

if문 안에 else if문 또는 else문 안에 if 문을 넣을 수 있다.

boolean flag = true;
int number = 2;

if(flag) {
        if(number == 1){
            System.out.println("flag 값은 true이고, number 값은 1입니다.");
        }else if(number == 2){
            System.out.println("flag 값은 true이고, number 값은 2입니다.");
        } else {
            System.out.println("flag 값은 true이고, number 값은 모르겠습니다");

        }
    } else {
        if(number == 1){
            System.out.println("flag 값은 false이고, number 값은 1입니다.");
        }else if(number == 2){
            System.out.println("flag 값은 false이고, number 값은 2입니다.");
        } else {
            System.out.println("flag 값은 false이고, number 값은 모르겠습니다");
        }

가위바위보 게임 만들기

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);

    System.out.println("A 입력 : ");
    String aHand = sc.nextLine();

    System.out.println("B 입력 : ");
    String bHand = sc.nextLine();

    if (Objects.equals(aHand, "가위")) {
        if (Objects.equals(bHand, "가위")) {
            System.out.println("A와 B는 비겼습니다.");

        } else if (Objects.equals(bHand, "바위")) {
            System.out.println("B가 이겼습니다.");

        } else if (Objects.equals(bHand, "보")) {
            System.out.println("A가 이겼습니다");
        } else {
            System.out.println("B가 이상한 값을 냈습니다.");
        }
        
		} else if (Objects.equals(aHand, "바위")) {
        if (Objects.equals(bHand, "가위")) {
            System.out.println("A가 이겼습니다.");

        } else if (Objects.equals(bHand, "바위")) {
            System.out.println("A와 B가 비겼습니다.");

        } else if (Objects.equals(bHand, "보")) {
            System.out.println("B가 이겼습니다");
        } else {
            System.out.println("B가 이상한 값을 냈습니다.");
            

이런 식으로 if 문 안에 else if 로 A가 "바위" 인경우를 추가 했고 아래에 마찬가지로 A가 "보"인 경우를 else if 로 추가하면 된다. 단, 마지막에 else를 또 사용하여 A가 이상한 값을 낸 경우를 넣어야 한다.

else {
System.out.println("A가 이상한 값을 냈습니다.");
}

Switch문

if문과 동일한 역할을 하며 가독성이 좋다.
switch(피연산자) {case(조건): (연산)} 형태로 주로 쓰인다.
switch(피연산자)가 casw 조건을 만족하면 case: 뒤에 명시된 연산을 수행한다.

각 case 연산문 마지막에는 break;를 꼭 넣어야 한다.
break; 문은 해당 casw 연산이 끝났다는 것을 알려줘 switch문을 종료시킨다.

switch문 중괄호 안의 가장 마지막에 default: (연산)을 명시하여 case 조건들이 모두 만족하지 않을 때 수행할 연산을 정해야 한다.
→if 문의 else 역할과 비슷

int month = 2;

String monthString = "";

    switch(month) {
        case 1:
            monthString = "1월";
            break;
        case 2:
            monthString = "2월";
            break;
        case 3:
            monthString = "3월";
            break;
 		default:
            monthString = "알 수 없음";
         }
 System.out.println(monthString);
            

이러면 2월에 해당 되기에 "2월" 을 출력하고 멈춘다.

if문과 switch문의 차이

복합조건

if문은 복합조건을 지원
괄호() 안에 조건 여러개를 지정하여 조건문을 수행 가능

switch문은 피연산자 한개에 대한 조건만 지원

코드중복

if문은 상대적으로 코드중복이 多
switch문은 코드중복이 적다

번외로 튜터님께서 현업에서 if문 또는 switch문 둘 중 회사마다 어떤 것을 쓸지는 상황에 따라 다르다고 했다. 하지만 전반적으로 if문을 더 선호한다고 한다.

if문과 switch문 둘 다 현업에서 쓰일 수 있기 때문에 둘다 적용하여 쓸 수 있도록 연습을 하는 것이 좋을 것 같다.

profile
안녕하세요~

0개의 댓글