[Java]제어문 - 조건문- if문

나영원·2020년 8월 24일
3

Java_basic

목록 보기
9/60

프로그래밍에서 제어문은 조건문과 반복문이 있으며 그 중 조건문을 먼저 배워 볼 것입니다.

if 문 & if-esle 문

가장 많이 사용되는 조건문으로 조건식의 결과에 따라 수행문이 실행되는 조건문으로 구조는 다음과 같습니다.

if문
if (조건식) {
수행문;

}

if-else문
if (조건식) {

        수행문1;

} else {

        수행문2;

}

첫번째 if문은 조건식이 참일 때 수행문을 실행하는 기본적인 조건문 입니다. 두번째 if-else문은 조건식이 참일 때 수행문1을 실행하고 거짓일때 수행문2를 실행하는 조건문 입니다.

public class IfExample1 {

	public static void main(String[] args) {
		
		char gender = 'M';
		
		if ( gender == 'F') {// { 중괄호시작 = 블록의 시작, 중괄호사이를 블록이라고 부름// 블록에서는 들여쓰기해야함(가독성)
			System.out.println("여성입니다.");
		}else {
			System.out.println("여성이아닙니다.");
		}
		// 여성이아닙니다.
	}

}

예제에 if-else문에서 if 뒤에 나오는 조건식의 결과가 거짓이기 때문에 수행문1가 아닌 수행문 2가 실행되어 결과값이 "여성이아닙니다." 나온 것을 확인 할 수 있습니다.

if - else if - else 문

if문과 if-else문에서 조건식이 한개였지만 if - else if문에서는 여러개의 조건식을 설정하여 조금더 복잡한 조건문을 만들어 낼 수 있습니다. if - else if문은 다음과 같은 구조를 가지고 있습니다.

구조를 살펴보면 if문 뒤에 첫번째 조건식이 나오고 참이면 수행문1을 실행하고 거짓이면 다음 조건식을 검토하여 참이면 수행문2를 실행하고 거짓이면 다음 조건식을 검토하는 것을 반복하다가 마지막 조건식이 거짓이라면 else이후에 나오는 수행문을 실행하는 구조로 되어있습니다.

이 구조를 오른쪽 그림과 같이 그림으로 풀어서 설명한 것을 순서도라고 합니다. 어떤 조건식이 맞으면 바로 수행문을 수행하고 조건문에서 빠져나가는 것을 확인 할 수 있습니다.

import java.util.Scanner;

public class IfExample2 {

	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in); // Systme.in 은 입력용 표준 out은 출력용
		
		int age = scanner.nextInt();
		
		int charge = 0;
		
		if (age < 8) {    
			charge = 1000;
		} else if (age <14 ) {  // age >=8 && age <14를 안해도 되는이유?
			                    // 8보다 작다는건 이미 앞에 구문에서 걸러짐
			charge = 1500;
		} else if (age <20 ) {
			charge = 2000;
		} else { 
			charge = 3000;
		}
		
		// 만약 else if 가아닌 그냥 if만 늘여쓰게 되면 질문이 서로 베타적이지 않게된다
		// 그럼 만족하는 숫자는 다 값이 도출된다. ex) 13입력시 1500원이 아닌 2000원도 답이 된다.
		// 여기서 범위를 엄격하게 주어주면 if를 늘여써도 가능하겠다.
		// if문안에 if를 쓰는경우는 조건이 2개일때 이다.
		
		System.out.println("나이 : " + age);  // 나이 : 15
		System.out.println("요금 : " + charge); // 요금 : 2000
	}

}

예제를 살펴보면 나이를 값으로 입력받아 나이를 구간별 조건식으로 만들어 놓은 if - else if 문입니다. 조건식2이 8 < age < 14가 아닌 이유는 앞에 순서도에서 본것 처럼 만약 8보다 작은 값이 라면 이미 조건문을 빠져나갔을 것이기 때문에 <8 이라는 부분을 생략 할 수 있 수 있습니다.

if - else if 문 예제)

점수를 입력 받아 다음과 같이 성적에 따라 학점을 출력하세요.

100 - 90점 : A

89 - 80 점 : B

79 - 70 점 : C

69 - 60 점 : D

59 점 이하 : F

//풀이

import java.util.Scanner;

public class IfExample3 {

	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		
		int score; 
		char grade;
		System.out.println("성적을 입력하세요 :"); score = scanner.nextInt(); 
		
		if (score >= 90) {
			grade = 'A';
		}else if (score >= 80) {
			grade = 'B';
		}else if (score >= 70) {
			grade = 'C';
		}else if (score >= 60) {
			grade = 'D';
		}else {
			grade = 'F';
		}
		
		System.out.println("점수 : "+score); // 89
		System.out.println("학점 : "+grade); // B

Scanner를 통해 점수를 score 변수로 입력 받아 if - else if문에 각 점수 구간 별 조건식을 만들어 구간에 맞는 학점을 출력하는 코드를 만들었습니다. 앞에 예제 처럼 조건식이 90> 80 >= 80이 아닌 이유는 90이상은 앞에 조건식에서 이미 걸러져서 뒤에 조건식에는 해당사항이 없기 때문입니다.

조건 문과 조건 연산자

앞에서 배운 삼항 연산자를 통해 if - else 문을 만들 수 있습니다.

if ( a> b) {

max =a

} esle {

max =b

}

max = ( a>b)? a : b ;

①번 if -else 문과 ②번 삼항연산자는 a와 b 둘 중 큰 값을 도출하는 같은 기능을 합니다.

위의 예를 통해 간단한 if-else문은 삼항연산자로 대체될 수 있다는 것을 알 수 있습니다.

profile
배우는 개발 일기

0개의 댓글