티스토리 뷰

반응형

제어문이란?

프로그램의 흐름(flow)을 바꾸는 역할을 하는 문장들을 제어문이라고 한다.

제어문에는 조건문과 반복문이 있다.

조건문은 조건에 따라 다른 문장이 수행되도록 하고, 반복문은 특정 문장들을 반복해서 수행한다. 


if문

if (조건식) {
        //조건식이 참(true) 일 때 수행될 문장들을 적는다. 
}

if문은 가장 기본적인 조건문으로 '조건식'과 '괄호{ }'로 이루어져 있다. 

if문은 조건식이 참(ture)이면 괄호 { } 안의 문장들을 수행하게 된다. 

 

예시)

public class Ex4_1 {

	public static void main(String[] args) {

		int score = 80;
	
		if (score > 60) { //조건식이 참(true)이므로 괄호{}안의 문장이 실행된다.
			System.out.println("합격입니다.");
		}
	}

}

위 if문의 조건식의 평가되는 과정은 아래와 같다. 

score > 60

→ 80 > 60

true // 조건식의 참이므로 괄호{ } 안의 문장이 실행된다. 


if - else문 (경우의 수가 두개)

if-else문은 if문에 'else'블럭이 추가된 것이다. 
else는 '그 밖의 다른'이라는 뜻으로 조건식의 결과가 참이 아닌 거짓일 때 else 블럭의 문장을 수행한다.

if (조건식) {
    // 조건식이 참(true) 일 때 수행될 문장들을 적는다.
} else {
   //조건식이 거짓(false) 일 때 수행될 문장들을 적는다.
}

조건식의 결과에 따라 이 두 개의 블럭{ }중 어느 한 블럭{ }의 내용이 수행되고 전체 if문을 벗어나게 된다. 

 

예시)

import java.util.Scanner;

public class Ex4_3 {

	public static void main(String[] args) {
		System.out.printf("숫자를 하나 입력하세요. >");
		Scanner scanner =  new Scanner(System.in);
		int input = scanner.nextInt(); //입력받은 숫자를 input에 저장
		
		if(input == 0 ) {
			System.out.println("입력하신 숫자는 0입니다.");
		} else { // input != 0
			System.out.println("입력하신 숫자는 0이 아닙니다.");
		}
	}
}

위 if문의 조건식이 거짓이므로 else문이 수행되었다. 


if - else if문 (경우의 수가 세 개 이상)

위에서 본 'if-else'문은 두 가지 경우 중 하나가 수행되는 구조인데, 

처리해야 할 경우의 수가 셋 이상인 경우에는 어떻게 해야 할까?
그럴 때는 한 문장에 여러 개의 조건식을 쓸 수 있는 'if-else-if'문을 사용하면 된다. 

if (조건식1) {
    // 조건식1의 연산 결과가 참일 때 수행될 문장들을 적는다. 
} else if (조건식2) {
   // 조건식2의 연산 결과가 참일 때 수행될 문장들을 적는다. 
} else if (조건식3) {
   // 조건식3의 연산 결과가 참일 때 수행될 문장들을 적는다. 
} else {  //마지막은 보통 else블럭으로 끝난다 (생략 가능)
  //  위의 어느 조건식도 만족하지 않을 때 수행될 문장들을 적는다. 
}

예제)

import java.util.Scanner;

public class Ex4_4 {

	public static void main(String[] args) {
		int score = 0; //점수를 저장하기 위한 변수
		char grade = 'D'; // 학점을 저장하기 위한 변수. (공백으로 초기화 /기본값을 'D'로 두면 else문 생략가능)
		
		System.out.print("점수를 입력하세요. >");
		Scanner scanner = new Scanner(System.in);// 점수 입력
		score = scanner.nextInt(); // 화면을 통해 입력받은 숫자 score에 저장
		
		if(score >= 90) {
			grade = 'A';
		} else if(score >= 80) {
			grade = 'B';
		} else if(score >= 70) {
			grade = 'C';
		}
//		else { 
//			grade = 'D';
//		}
		System.out.println("당신의 학점은 " + grade + "입니다." );
	}

}


중첩 if문 

if문의 블럭 내 또 다른 if문을 포함시키는 것이 가능하다. 
이것을 중첩 if문이라고 부르며, 중첩의 횟수에는 거의 제한이 없다.  

if (조건식1) {
   // 조건식1과 조건식2가 모두 ture일 때 수행될 문장들
   if (조건식2) {
          // 조건식1과 조건식2가 모두 ture일 때 수행될 문장들
    } else {
         // 조건식1이 ture, 조건식2가 false일 때 수행될 문장들
    }
} else {
  // 조건식1이 false일 때 수행될 문장들
}

중첩 if문을 쓸 때 내부의 if문은 외부의 if문 보다 안쪽으로 들여 쓰기를 하여,

두 if문의 범위를 명확히 구분할 수 있도록 작성해야 한다. 

 

예제)

import java.util.Scanner;

public class Ex4_5 {

	public static void main(String[] args) {

		int score = 0;
		char grade = 'C' , opt =' ';
		
		System.out.print("점수를 입력해주세요. >");
		
		Scanner scanner = new Scanner(System.in);
		score = scanner.nextInt();//입력 받은 점수를 score에 저장
		
		System.out.printf("당신의 점수는%d 입니다.%n" , score);
		
		if(score >= 90) {
			grade = 'A';
			if (score >= 98) {
				opt = '+';
			} else if (score <94) {
				opt = '-';
			}
		}else if(score >=80) {
			grade = 'B';
			if (score >= 88) {
				opt = '+';
			} else if (score <84) {
				opt = '-';
			}
		} 
		System.out.printf("당신의 학점은 %c%c입니다. %n" , grade , opt);
	}
}
반응형

'개발 공부 > JAVA' 카테고리의 다른 글

[Java] 제어문 - 반복문(for문)  (0) 2021.12.01
[Java] 제어문 - 조건문(switch문)  (0) 2021.12.01
[Java] 연산자  (0) 2021.11.22
[Java] 타입 간의 변환 방법  (0) 2021.11.16
[Java] 기본형과 참조형  (0) 2021.11.16