[자바/JAVA] 조건문(if, switch, if-else, else, break)에 대해 알아보자📌

박정현·2023년 7월 27일
0
post-thumbnail

조건문

자바는 main() 메소드의 시작 중괄호{ 에서 끝 중괄호}까지 위에서 아래로 실행하는 흐름을 가지는데 이러한 흐름을 원하는 방향으로 바꿀 수 있도록 해주는 것을 제어문이라 한다.

제어문의 종류로 조건문과 반복문이 있다.

이번 포스팅에서는 조건문에 대해 먼저 알아보겠다.

1) IF

조건문은 if문과 switch문이 있는데 조건이 하나일 경우 if문을 사용한다.

  • if문은 조건식의 결과가 true 혹은 false냐에 따라 실행여부가 결정된다.
  • 따라서 조건식에는 true나 false값을 산출할 수 있는 조건식이나 boolean타입 변수가 올 수 있다.
  • 조건식이 true일 때는 블록을 실행하고 false일 때는 블록을 실행하지 않는다.
  • 조건이 하나일 경우 if문을 사용한다.
if( 조건식 ) {

실행문A  //조건문이 true인 경우 A실행

}

실행문B  //조건식이 false인 경우 B
  • 괄호( )안의 조건식이 true인 경우 중괄호{ }블록 안에 있는 실행문A가 실행되고 실행문B가 실행된다.
  • 괄호( )안의 조건식이 false인 경우 중괄호{ }블록 밖에 있는 실행문B가 실행한다.

🙋‍♂️ int=10; 일 때 if문을 활용해서 10보다 큽니다를 출력해보자.

int i =10;

		if(i>10) {
			System.out.println("10보다 큽니다.");
		}
		
		if(i>10) System.out.println("10보다 큽니다.");
		
		//조건이 2개일 때
		if(i>10) {
			System.out.println("10보다 큽니다.");
		}else {
			System.out.println("10보다 작거나 같습니다.");
		}
		
	}
- 실행문이 하나일 경우 중괄호 블록을 생략할 수도 있다.

🙋‍♂️ Id와 Pw를 scanner를 이용해서 출력받고 설정한 아이디와 비밀번호가 일치하면 “일치합니다.”를 출력해보자

	String userId="m111";
		String userPw="1111";
		
		//userId가 m111이면
		if(userId.equals("m1111")) {
			System.out.println("아이디가 일치합니다.");
		}else {
			System.out.println("아이디가 일치하지 않습니다.");
		}
		
		
		//userPw가 1111이면
		if(userPw.equals("1111")) {
			System.out.println("비밀번호가 일치합니다.");
		}else {
			System.out.println("비밀번호가 일치하지 않습니다.");
		}

2) If - else문

  • 조건이 두개일 경우 if-else문을 사용한다.
if ( 조건식 ) {
       실행문A    // 조건식이 true이면 A → C 실행
} else {
        실행문B  // 조건식이 false이면 B → C 실행
}
실행문C
  • 조건식이 true이면 실행문A 실행하고 바로 실행문C로 간다.
  • 조건식이 false이면 실행문B 실행하고 실행문C로 간다.

3) if-else if-else문

  • 조건문이 여러 개일 경우 if-else if- else문을 사용한다.
if ( 조건식1 ) {
       실행문A    // 조건식1이 true이면 A → D 실행
} else if (조건식2) {
        실행문B  // 조건식1이 false이면 조건식2로 이동
                         //조건식2가 true이면 B → D 실행
} else {
         실행문C //조건식2가 false이면 C → D실행
}
실행문D
  • if else문의 수는 제한이 없으며 여러 개의 조건식 중 true가 되는 블록만 실행하고 전체 if문을 벗어나게 된다.
  • else if문 블록의 마지막에는 else 블록을 추가할 수 있는데 모든 조건식이 false일 경우 else블록을 실행하고 if문을 벗어나게 된다.

4) 다중 if문

  • if문안에 if문이 또 있는 경우를 말한다.
if( 조건1 ) {
		if( 조건2 )  {
                  // 조건1&&조건2와 같음 
		}
} else{
					// 조건1이 false면 바로 else
					// 조건1이 true여도 조건2가 false면 else 
}
  • 안에 있는 if는 조건1과 조건2가 모두 충족해야 한다.

🙋‍♀️ 로그인 상활일 때 다음과 같이 나타낼 수 있다.

if( 아이디 조건 ) {
		if( 비밀번호 조건 )  {
           // 아이디 && 비밀번호 인경우 -> 로그인 성공
		} else {
		      // 아이디 맞으나 비밀번호 틀림 -> 로그인 실패 (비밀번호가 틀렸습니다)  
    }
} else{
					// 아이디가 틀리면 바로 else로 와서 -> 로그인 실패(아이디가 틀렸습니다)
				
}

🙋‍♀️ 국, 영, 수 점수를 입력하고 평균에 따라 학점을 출력하는 예제

```java
package org.java.conditionEx;

import java.util.Scanner;

public class IfEx4 {

	public static void main(String[] args) {
		System.out.println("if문");

		/*
		 * 국어, 영어 수학 점수를 입력하고 총점(국+영+수)을 이용하여 평균을 계산한 후 평균이 90이상 "A", 80이상이면 "B", 70이상이면
		 * "C", 60이상이면 "D", 60미만이면 "F" 콘솔에 출력 되도록 프로그래밍 하세요. Scanner, nextInt(), if문 사용
		 */

		// 변수 선언 상단 위치
		int kor = 0;
		int math = 0;
		int eng = 0;
		int sum = 0;
		double avg = 0.0;

		Scanner input = new Scanner(System.in);

		System.out.println("국어 점수 입력:");
		kor = input.nextInt();

		System.out.println("영어 점수 입력: ");
		math = input.nextInt();

		System.out.println("수학 점수 입력: ");
		eng = input.nextInt();

		sum = (kor + eng + math); // 총점=국어+영어+수학
		avg = (double) sum / 3; // avg, sum 모두 정수이지만, 결과값이 실수이기 때문에 둘 중 하나를 실수형으로 바꿔줌
								// -> 자동 형변환

		if (avg >= 90) {
			System.out.println("A");
		} else if (avg >= 80) {
			System.out.println("B");
		} else if (avg >= 70) {
			System.out.println("C");
		} else if (avg >= 80) {
			System.out.println("D");
		} else {
			System.out.println("F");
		}

		System.out.println("국어점수: " + kor + "점, 영어점수: " + eng + "점, 수학점수: " + math + "점");
		System.out.println("총점: " + sum + "점");
		System.out.println("평균: " + avg + "점");

		input.close();

		// 평균이 95이상 "A+", 90이상이면 "A", 85이상이면 "B+", 80이상이면 "B"
		// 평균이 75이상 "C+", 70이상이면 "C", 65이상이면 "D+", 60이상이면 "D"
		// 평균이 60미만이면 "F"

		if (avg >= 90) {
			if (avg >= 95) {
				System.out.println("A+");
			} else {
				System.out.println("A");
			}
		} else if (avg >= 80) {
			if (avg >= 85) {
				System.out.println("B+");
			} else {
				System.out.println("B");
			}
		} else if (avg >= 70) {
			if (avg >= 75) {
				System.out.println("C+");
			} else {
				System.out.println("C");
			}
		} else if (avg >= 60) {
			if (avg >= 65) {
				System.out.println("D+");
			} else {
				System.out.println("D");
			}
		} else {
			System.out.println("F");
		}

	}
}
```

5) switch문

  • switch문은 if문과 다르게 true일 경우에 블록 내부의 실행문을 실행하는 것이 아니라, 변수가 어떤 값을 갖느냐에 따라 실행문이 결정된다.
  • if문은 조건이 많아질 수록 else-if를 통해 계속해서 추가해주어야 하지만 switch문은 변수의 값에 따라 실행문이 결정되기 때문에 같은 기능의 if문 보다 코드가 간결하다.
  • 괄호 안의 변수값과 동일한 값을 갖는 case로 가서 실행문을 실행한다.
  • 만약 괄호 안의 변수 값을 갖는 case가 없다면 default로 가서 실행문을 실행하는데 default는 생략이 가능하다.
    • default 실행 후 switch문 종료한다.
  • switch문에서 주의할 점은 case블록 마지막에 break; 를 반드시 작성해야 한다.
    • break문은 만나면 switch문을 즉시 종료한다.
    • 다음에 있는 case를 실행하지 않고 switch문을 빠져나오기 위해 사용한다.
    • break가 없다면 다음에 있는 case가 계속 실행되며 이때는 case값과 상관없이 실행된다.
    • default는 break가 없다.
  • case 칠 때 Tab키를 사용하지 않아도 알아서 정렬된다.
✅ switch ( 변수 ) { case 값1: 실행문A // 변수가 값1인 경우 실행문A 실행
   break;
case 값2:
    실행문B  // 변수가 값2인 경우 실행문B 실행

    break;
default:
     실행문C //변수가 값1, 값2 모두 아닌 경우 (나머지 처리문) 실행문C 실행

}

profile
개발을 개발괴발하지 않기 위한 노력

1개의 댓글

comment-user-thumbnail
2023년 7월 27일

글 잘 봤습니다.

답글 달기