본문 바로가기
JAVA

[JAVA] - 조건문 (if, switch)

by nam_ji 2024. 1. 7.

if, switch 개념

if문

  • if(조건)
    • 특정 조건에 따라 다른 연산을 수행하고 싶을때 사용하는 문맥입니다.
    • 기본적인 조건에 따른 연산을 수행하기 위해 if(조건) { 연산 } 형태로 사용합니다.
    • if 의 소괄호() 안의 조건이 boolean 값 true 를 만족하면 중괄호 {} 안의 연산을 수행합니다.
    • if문 코드
      더보기
      예시
      // 조건문
              boolean flag1 = true;
      
              if (flag1) {
                  System.out.println("flag1 값은 true 입니다."); // flag 값은 true 입니다. 출력
              }​
  • if(조건)-else
    • if문 조건이 거짓일 경우에 따른 연산을 수행하기 위해 else { 연산 } 형태로 사용합니다.
    • if 의 소괄호() 안의 조건이 boolean 값 false 를 만족하면 else 의 중괄호 {} 안의 연산을 수행합니다.
    • if - else 코드
      더보기
      예시
      // 조건문 with else
              boolean flag2 = false;
      
              if (flag2) {
                  System.out.println("flag2 값은 true 입니다."); // 미출력
              } else {
                  System.out.println("flag2 값은 false 입니다."); // flag 값은 false 입니다. 출력
              }​
  • if(조건)-else if(조건)
    • if문 조건이 거짓일 경우에 다시한번 다른조건으로 체크해서 참일 경우에 연산을 수행하기 위해 else if(조건) { 연산 } 형태로 사용합니다.
    • else if 의 소괄호() 안의 조건이 boolean 값 true 를 만족하면 else if 의 중괄호 {} 안의 연산을 수행합니다.
    • if - else if 코드
      더보기
      예시
      // 조건문 with else if
              int number1 = 2;
      
              if (number1 == 1) {
                  System.out.println("number1 값은 1 입니다."); // 미출력
              } else if (number1 == 2) {
                  System.out.println("number1 값은 2 입니다."); // number 값은 2 입니다. 출력
              } else {
                  System.out.println("number1 값은 모르는 값입니다."); // 미출력
              }​
  • if 문에 else, else if 로 해결할 수 없는 복잡한 조건이 있을 수 있습니다.
  • 이럴때 중첩해서 if 문 또는 else if문 또는 else 문 안에 if 문을 넣을 수 있습니다.
    • 중첩 if
      더보기
      예시
      // 중첩 조건문
              boolean flag3 = true;
              int number2 = 2;
      
              if (flag3) {
                  if (number2 == 1) {
                      System.out.println("flag3 값은 true, number2 값은 1 입니다."); // 미출력
                  } else if (number2 == 2) {
                      System.out.println("flag3 값은 true, number2 값은 2 입니다."); // flag 값은 true, number 값은 2 입니다. 출력
                  }
              } else {
                  if (number2 == 1) {
                      System.out.println("flag3 값은 false, number2 값은 1 입니다."); // 미출력
                  } else if (number2 == 2) {
                      System.out.println("flag3 값은 false, number2 값은 2 입니다."); // 미출력
                  }
              }​
    • 가위바위보 게임 만들기
    •  입력
      • 첫번째 입력값으로 A 유저가 낸 가위바위보
      • 두번째 입력값으로 B 유저가 낸 가위바위보
    • 출력
      • A, B 유저중에 누가 이겼는지 출력중첩 if문 활용
    • 더보기
      package Second;
      
      import java.util.Objects;
      import java.util.Scanner;
      
      public class Quiz1 {
          // if 문을 사용하여 가위바위보 게임 만들어 보기
          public static void main(String[] args) {
              Scanner sc = new Scanner(System.in);
      
              System.out.print("A 입력 : ");
              String aHand = sc.nextLine(); // A 입력
      
              System.out.print("B 입력 : ");
              String bHand = sc.nextLine(); // B 입력
      
              // 두 개의 값을 비교하는 메서드 -> Objects.equals(좌, 우) : 좌 우가 같은 경우 true, 다른 경우 false
              if (Objects.equals(aHand, "가위")) { // 값을 비교하는 Obects.equals() 메서드 사용
                  if (Objects.equals(bHand, "가위")) {
                      System.out.println("A 와 B 는 비겼습니다."); // 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 if (Objects.equals(aHand, "보")) {
                  if (Objects.equals(bHand, "가위")) {
                      System.out.println("B 가 이겼습니다.");
                  } else if (Objects.equals(bHand, "바위")) {
                      System.out.println("A 가 이겼습니다.");
                  } else if (Objects.equals(bHand, "보")) {
                      System.out.println("A 와 B 는 비겼습니다.");
                  }
              }
              // 입/출력 예시
              // A 입력 : 가위
              // B 입력 : 보
              // A 가 이겼습니다.
          }
      }
      
 

switch문

  • switch 문은 case 문과 함께 사용하며 if문 보다 좀더 가독성이 좋은 조건문 표현식 입니다.
  • switch(피연산자) { case(조건): (연산) } 이러한 형태로 많이 쓰입니다.
  • switch 피연산자가 case 조건을 만족하면 case: 뒤에 명시되어 있는 연산을 수행합니다.
  • case(조건): (연산) 은 여러개를 설정할 수 있습니다.
    • 각 case 의 연산문 마지막에는 break; 를 꼭 넣어줘야 합니다
    • break; 문은 해당 case 의 연산문이 끝났다는것을 알려주어 switch 문을 종료시켜줍니다.
    • 만약 case 의 연산문 마지막에 break; 를 안넣어주면 case 의 연산문이 안 끝났기 때문에 switch 문 블럭이 끝날때 까지 전부 실행됩니다
  •  switch문 중괄호 안의 제일 마지막에 default: (연산) 을 명시해주어 case 조건들이 모두 만족하지 않을때 수행할 연산을 정해주어야 합니다.
    • default: (연산) 은 아무것도 만족하지 않을때 수행하는 것이라, 없다면 생략해도 됩니다.
  •  if문과 switch문의 차이점 
  • 차이점1. 복합조건
    • if 문은 복합조건을 지원합니다.
      • 복합조건 : 괄호()안에 조건 여러개를 지정하여 조건문을 수행할 수 있습니다.
    •  switch 문은 피연산자 한개에 대한 조건만 지원합니다.
  • 차이점2. 코드중복
    • if 문은 상대적으로 코드중복이 많습니다.
    • switch 문은 코드중복이 적습니다.  
      • switch문 작성법 및 if문과 차이점
        더보기
        예시
        package Second;
        
        public class SwitchGrammar {
            public static void main(String[] args) {
                // switch/case 문
        
                int month = 8;
                String monthString = "";
                switch (month) {
                    case 1:  monthString = "1월";
                        break;
                    case 2:  monthString = "2월";
                        break;
                    case 3:  monthString = "3월";
                        break;
                    case 4:  monthString = "4월";
                        break;
                    case 5:  monthString = "5월";
                        break;
                    case 6:  monthString = "6월";
                        break;
                    case 7:  monthString = "7월";
                        break;
                    case 8:  monthString = "8월";
                        break;
                    case 9:  monthString = "9월";
                        break;
                    case 10: monthString = "10월";
                        break;
                    case 11: monthString = "11월";
                        break;
                    case 12: monthString = "12월";
                        break;
                    default: monthString = "알수 없음";
                }
                System.out.println(monthString); // 8월 출력
        
                // if vs switch
                // switch 문 실습 코드를 if 문으로 바꿔보겠습니다.
        
                // if 로 변환
                if (month == 1) {
                    monthString = "1월";
                } else if (month == 2) {
                    monthString = "2월";
                } else if (month == 3) {
                    monthString = "3월";
                } else if (month == 4) {
                    monthString = "4월";
                } else if (month == 5) {
                    monthString = "5월";
                } else if (month == 6) {
                    monthString = "6월";
                } else if (month == 7) {
                    monthString = "7월";
                } else if (month == 8) {
                    monthString = "8월";
                } else if (month == 9) {
                    monthString = "9월";
                } else if (month == 10) {
                    monthString = "10월";
                } else if (month == 11) {
                    monthString = "11월";
                } else if (month == 12) {
                    monthString = "12월";
                } else {
                    monthString = "알수 없음";
                }
                System.out.println(monthString); // 8월 출력
            }
        }
        ​​

'JAVA' 카테고리의 다른 글

[JAVA] - break, continue  (0) 2024.01.08
[JAVA] - 반복문 (for, while)  (0) 2024.01.08
[JAVA] - 연산자  (2) 2024.01.07
[JAVA] - 자바 2차원 배열  (0) 2024.01.06
[JAVA] - 자바 기초  (0) 2024.01.03