본문 바로가기

IT/JAVA

자바 제어문 - 백기선님 스터디 4주차 과제

목표

자바가 제공하는 제어문을 학습하세요.

학습할 것 (필수)

선택문
반복문

 


선택문 if, switch

if문

앞서 3주 차 과제에서 공부했던 연산자를 이용한 다양한 조건식을 괄호() 안에 넣을 수 있다.

조건식이 참이면 중괄호{} 안의 문장을 수행한다. 중괄호{} 안의 문장이 한 줄 일 경우 중괄호를 생략할 수 있다.

1.
if (조건식) {
	// 조건식이 true일 때 실행
}

 

1. 가장 최소한의 문장만이 쓰인 if문인다.

조건식이 true일 경우 중괄호의 문장을 실행하고 false일 경우는 다음 코드로 넘어간다.

 

2.
if (조건식1) {
	// 조건식1이 true일 때 실행
}
else if (조건식2){
	// 조건식2가 true일 때 실행
}

 

2. 여러개의 조건식으로 실행문을 나눌 때 사용된다. else if의 개수는 1개 이상 몇 개가 오든 상관없다.

조건식 1이 true일 경우 해당 중괄호 안의 문장을 실행하고 나머지 조건식은 판단하지 않는다.

조건식1이 false일 경우 조건식 2를 판단하며 true일 경우 중괄호 안의 문장을 실행, 나머지 조건식은 판단하지 않는다. false일 경우 이와 같은 행동을 반복한다.

 

3. 
if (조건식) {
	// 조건식이 true일 때 실행
}
else{
	// 조건식이 false일 때 실행
}

 

3. else는 if, else if등의 모든 조건식이 전부 false일 때 실행된다. else의 개수는 0개 또는 1개이다.


다만 아래와같은 경우에는 else문이 꼭 필요하다.
if와 else if의 조건을 모두 만족하지 않는 경우 grade의 값이 선언되지 않는 케이스가 발생하기 때문이다.
else문을 생략하고 싶다면 grade 변수를 선언할 때 초기화를 해 주면 오류가 발생하지 않는다.

 

 

 

switch문

여러개의 조건식을 사용하는 if문과는 달리 switch문은 하나의 조건식만을 사용한다.

switch (조건식) {
	case 값1 :
    	// 조건식의 값이 값1일 경우 실행되는 문장
        // ...
        break;
	case 값2 :
    	// 조건식의 값이 값2일 경우 실행되는 문장
        // ...
        break;
    // ...
	default :
    	// 조건식의 값과 일치하는 case가 없을 경우 실행되는 문장
        // ...
}

조건식을 계산한 뒤 case 값을 전부 확인하는 것이 아니라

바로 일치하는 case문으로 이동하여 해당 문장들을 실행한다.

break문이나 switch문의 끝을 만나면 switch문 전체를 빠져나간다.

break문을 작성하지 않으면 break문이 나오거나 switch문의 끝이 나올 때까지 모든 문장이 실행되므로 꼭 써줘야한다.

 

switch문의 제약조건

 1. 조건식의 결과는 정수 또는 문자열이어야 한다.

 2. case문의 값은 정수 상수만 가능하며, 중복되지 않아야 한다.

 

 

여러개의 case에서 같은 구문을 실행하고 싶다면 아래와 같이 사용할 수 있다.

switch (조건식){
    case 1:
    case 2:
    case 3:
    	System.out.println("1, 2, 3일 때 모두 현재 구문 실행");
        break;
    default:
    	System.out.println("1, 2, 3이 아닐 때 현재 구문 실행");
}

 

if문과 switch문 비교. 각각의 코드는 동일한 결과를 가진다.

if(a == 1){
	System.out.println("a는 1");
}else if(a == 2){
	System.out.println("a는 2");
}else{
	System.out.println("a는 1도 2도 아니다.");
}


switch(a){
	case 1:
	    System.out.println("a는 1");
    	    break;
	case 2:
	    System.out.println("a는 2");
    	    break;
	default:
	    System.out.println("a는 1도 2도 아니다.");
    	    break;
}

 

 

if(a == 1 || a == 2){
	System.out.println("a는 1 또는 2이다.");
}


switch(a){
    case 1:
    case 2:
        System.out.println("a는 1 또는 2이다.");
}

 


반복문 for, while, do-while

 

for문

for(초기화; 조건식; 증감식){
	// 조건식이 true일 때 수행될 문장
}

ex)
for(int i = 0; i < 5; i++){
	System.out.println("i = " + i);
}

for문은 초기화, 조건식, 증감식, 블럭{} 모두 4부분으로 이루어져 있으며 조건식이 참인 동안 블럭 내 문장들을 수행한다.

1. 초기화 수행

2. 조건식 판별

 2-1. 조건식이 참일 경우 블럭 내 문장 수행

 2-2. 조건식이 거짓일 경우 for문을 벗어난다.

3. 증감식 수행

4. 다시 조건식 판별

 

 

 

while문

while(조건식){
	// 조건식이 참일 때 반복될 문장
}

ex)
int i = 0;
while(i < 5){
	System.out.println("i = " + i);
    i++;
}

while문은 조건식, 블럭{} 두 부분으로 이루어져 있으며 조건식이 참인 동안 블럭 내 문장들을 수행한다.

1. 조건식 판별

 1-1. 조건식이 참일 경우 블럭 내 문장 수행

 1-2. 조건식이 거짓일 경우 while문을 벗어난다.

 

do-while문

do{
	// 조건식이 참일 때 수행될 문장
} while(조건문); // 마지막에 ;를 쓰지않으면 오류 발생


ex)
int answer = 8;
int input = 0;

do{
	System.out.println("10이하의 값 입력");
    input = scanner.nextInt();
    
} while(input != answer);

do-while문은 블럭{}을 먼저 수행한 후 조건식을 판별하므로 다른 반복문과는 다르게 최소 수행 횟수가 1회이다.

 

break문

반복문 수행 중 break문을 만나면 자신이 포함된 가장 가까운 반복문을 벗어난다.

 

 

가장 가까운 반복문인 2번 반복문을 벗어나 다음 로직을 수행한다.

 

continue문

반복문 수행 중 continue문을 만나면 반복문의 끝으로 이동한 후 다음 반복으로 넘어간다.

 

 

반복문을 벗어나는 것이 아니다.


Reference)
자바의 정석 -남궁 성