[혼공자] chapter04 - 조건문과 반복문

나봉·2025년 1월 17일
0

13기 혼공자

목록 보기
6/14

04-1 조건문: if문 switch문

  • 자바 프로그램은 main()메소드의 시작 중괄호 {에서끝 중괄호}까지 위에서부터 아래로 실행하는 흐름을 가진다.

  • 실행하는 흐름을 바꿀 수 있도록 해주는 것흐름 제어문 혹은 제어문이라고 합니다.

  • 조건문 : 조건식에 따라 다른 실행문을 실행
    • 조건문의 종류
    1. if문, if else문, else if문 : 조건식의 결과가 true, false에 따라
    2. switch문 : 변수의 값에 따라

if문

  • 조건식의 결과에 따라 블록 실행 여부가 결정

  • 조건식에는 연산식이나 boolean타입 변수가 올 수 있다.

  • 조건식이 true이면 블록이 실행되고, false이면 블록이 실행되지 않는다.

  • 조건식이 true가 될 때 실행해야 할 문장이 하나라면 중괄호 블록{}은 생략 가능

if문 형태

	if(조건식) {
    	실행문A
    }
    실행문B
public class IfExample {

	public static void main(String[] args) {

		int score = 93;
		
		if (score >= 90) {
			System.out.println("점수가 90보다 큽니다.");
			System.out.println("등급은 A입니다.");
		}
		
		if (score < 90) 
			System.out.println("점수가 90보다 작습니다.");
			System.out.println("등급은 B입니다."); // if문과는 상관 없는 실행문
	}
}

위 코드의 출력 결과는
점수가 90보다 큽니다.
등급은 A등급입니다.
등급은 B등급입니다.
3줄이 출력된다. 마지막 등급은 B등급입니다.은 두 번째 if문과는 상관 없이 출력된다. 그 이유는 두 번째if문에서 중괄호를 생략 했기 때문이다.

if else문

  • 조건식의 결과에따라 실행 블록을 선택

  • 조건식이 true이면 if문 블록이 실행되고 false이면 else 블록이 실행된다.

  • 조건식의 결과에 따라 if블록과 else블록 중 어느 한 블록의 내용만 실행하고 전체 if문을 벗어난다.

if else 형태

	if(조건식1) {
    	실행문A
    } else {
    	실행문B
    }
    실행문C

if else 예

public class IfElseExample {

	public static void main(String[] args) {

		int score = 85;
		
		if (score >= 90) {
			System.out.println("점수가 90보다 큽니다.");
			System.out.println("등급은 A입니다.");
		} else { // score < 90 경우 실행
			System.out.println("점수가 90보다 작습니다.");
			System.out.println("등급은 B입니다.");
		}
	}
}

else if문

  • 조건문이 여러 개인 if문

  • 처음 if문의 조건식이 false일 경우 다른 조건식의 결과에 따라 실행 블록을 선택, if 블록의 끝에 else if문을 붙인다.

  • else if문의 수는 제한이 없으며 여러 개의 조건식 중 true가 되는 블록만 실행하고 전체 if문을 벗어난다.

  • else if블록의 마지막에는 else 블록을 추가할 수 있는데, 모든 조건식이 false일 경우 else블록을 실행하고 if문을 벗어난다.

else if문 형태

	if(조건식1) {
    	실행문A
    } else if(조건식2) {
    	실행문B
    } else {
    	실행문C
    }
    실행문D

else if문 예

public class IfElseIfElseExample {

	public static void main(String[] args) {

		int score = 75;
		
		if (score >= 90) {
			System.out.println("점수가 100~90 입니다.");
			System.out.println("등급은 A입니다.");
			
		} else if (score >= 80) {
			System.out.println("점수가 80~89 입니다.");
			System.out.println("등급은 B입니다.");
			
		} else if (score >= 70) {
			System.out.println("점수가 70~79 입니다.");
			System.out.println("등급은 C입니다.");
			
		} else { // score < 70일 경우 실행
			System.out.println("점수가 70점 미만 입니다.");
			System.out.println("등급은 D입니다.");
		}
	}
}

로또 번호 뽑기

  • Math.random()메서드를 활용한다.

  • 이 메서드는 0.0과 1.0사이에 속하는 double타입의 난수를 하나 리턴한다.
    범위는 0.0은 범위에 포함하고 1.0은 범위에 포함하지 않는다.

              0.0 <= Math.random() < 1.0
              // 1 부터 45까지 난수를 출력할려면
              int num1 = (int)(Math.random() * 45) + 1;
              // 주사위 번호 출력
              int num2 = (int)(Math.random() * 6) + 1;

switch문

  • 조건 제어문으로 변수의 값에 따라 실행문이 결정된다.

  • 변수의 값과 동일한 값을 갖는 case가 없다면 default로 가서 실행된다.
    default는 생략이 가능하다.

  • case 끝에 break가 붙어 있는 이유는 다음 case를 실행하지 않고 switch문을 빠져나가기 위해서 이다.
    break가 없다면 다음 case가 연달아 실행되는데, 이때는 case값과는 상관없이 실행된다.

switch문 형태

	switch(변수) {
    	case1:
            실행문A
            break;
        case2:
            실행문B
            break;
        case3:
            실행문C
            break;  
    	default:
        	실행문D
    }

switch문 예1(break문 있음)

public class SwitchExample {

	public static void main(String[] args) {

		int num = (int)(Math.random() * 6) + 1;
		
		switch (num) {
			case 1: 
				System.out.println("1번이 나왔습니다.");
				break;
			case 2: 
				System.out.println("2번이 나왔습니다.");
				break;
			case 3: 
				System.out.println("3번이 나왔습니다.");
				break;
			case 4: 
				System.out.println("4번이 나왔습니다.");
				break;
			case 5: 
				System.out.println("5번이 나왔습니다.");
				break;
			default:
				System.out.println("6번이 나왔습니다.");
		}
	}
}

switch문 예2(break문 없음)

public class SwitchNoBreakCaseExample {

	public static void main(String[] args) {

		// (int)(0.0 + 8) <= random < (int)(4.0 + 8) => 8 <= random <12
		int time = (int)(Math.random() * 4) + 8;
		System.out.println("현재 시간 " + time + "시" );
		
		switch (time) {
		case 8:
			System.out.println("출근합니다.");
		case 9:
			System.out.println("회의합니다.");
		case 10:
			System.out.println("업무를 봅니다.");
		default:
			System.out.println("외근을 나갑니다.");
		}
	}
}

04-2 반복문: for문, while문, do-while문

  • 반복문 : 어떤 작업이 반복적으로 실행되도록 할 때 사용
    • 반복문의 종류
    1. for문
    2. while문
    3. do-while문

=> for문은 반복 횟수를 알고 있을 때 주로 사용, while문은 조건에 따라 반복할 때 주로 사용
=> while문과 do-while문의 차이점은 조건을 먼저 검사하느냐 나중에 검사하느냐의 차이

for문

  • 주어진 횟수만큼 반복문을 실행

for문 형태

	for(초기화식; 조건식; 증감식) {
    	실행문;
    }

for문 예

public class ForSumFrom1To100Example {

	public static void main(String[] args) {

		int sum = 0;
		
		for (int i = 1; i <= 100; i++) {
			sum += i;
		}
		
		System.out.println("1 ~ 100 합: " + sum); // 5050
	}
}

중첩 for문 예

public class ForMultiplicationTableExample {

	public static void main(String[] args) {

		for(int m = 2; m <= 9; m++) {
			System.out.println("*** " + m + "단 ***");
			for(int n = 1; n <= 9; n++) {
				System.out.println(m + " x " + n + " = " + (m * n));
			}
			System.out.println();
		}
	}
}

while문

  • 조건식이 true일 경우 계속해서 반복

  • 비교 또는 논리 연산식이 주로 오고 조건식이 false가 되면 반복 행위를 멈추고 while문 종료

while문 형태

	while(조건식) {
    	실행문;
    }

while문 예

public class WhileSumFrom1To100Example {

	public static void main(String[] args) {

		int sum = 0;
		int i = 1;
		
		while(i <= 100) {
			sum += i;
			i++;
		}
		
		System.out.println("1부터 " + (i-1) + "까지의 합 : " + sum);
	}
}

do-while문

  • 블록 내부의 실행문을 우선 실행하고 실행 결과에 따라서 반복실행을 계속할지 결정

do-while문 예

public class WhileSumFrom1To100Example {

	public static void main(String[] args) {

		int sum = 0;
		int i = 1;
		
		// do-while문
		do {
			sum += i;
			i++;
		} while(i <= 100);
		
		System.out.println("1부터 " + (i-1) + "까지의 합 : " + sum);
	}
}

break문

  • 반복문의 실행을 중지 할 때 사용(switch문에서도 사용)

while문(break문 있음)

public class BreakExample {

	public static void main(String[] args) {

		while(true) {
			// 1 ~ 6까지 범위에서 나오는 랜덤 수
			int num = (int) (Math.random() * 6) + 1;
			System.out.println(num);
			if (num == 6) {
				break;
			}
		}
		System.out.println("프로그램 종료");
	}
}

바깥쪽 반복문 종료(반복문 중첩 시)

  • 반복문 중첩 시 break문은 가장 가까운 반복문만 종료한다.
    바깥쪽 반복문을 종료하고 싶을 경우 이름(라벨)을 붙이고, break 이름;을 사용한다.
public class BreakOutterExample {

	public static void main(String[] args) {

		Outter:
		for(char upper ='A'; upper <= 'Z'; upper++) {
			for(char lower = 'a'; lower <= 'z'; lower++) {
				System.out.println(upper + " - " + lower);
				if (lower == 'g') {
					break Outter;
				}
			}
		}
		System.out.println("프로그램 실행 종료");
	}
}

continue문

  • 반복문을 종료하지 않고 계속 반복 수행

  • 반복문에서만 사용, 블록 내부에서 continue문 실행 시 for문은 증감식으로 while문과 do-while문은 조건식으로 이동한다.

  • if문과 같이 사용되는데, 특정 조건을 만족하는 경우에 continue문을 실행해서 그 이후의 문장을 실행하지 않고 다음 반복으로 넘어간다.

continue문 예

public class ContinueExample {

	public static void main(String[] args) {
		for (int i = 1; i <= 10; i++) {
			if (i%2 != 0) { // 홀수 일 때
				continue;
			}
			System.out.println(i);
		}
	}
}

0개의 댓글

관련 채용 정보