Part 4. 제어문

Hyunsu·2023년 2월 9일
0

국비 교육

목록 보기
4/36
post-thumbnail

제어문을 공부했다면 필수 코스인 별 출력하기
문제 9 에서 처음에 공백 출력 때문에 헷갈렸는데 풀다 보니 예전에 풀었던 기억이 났다 ✍️

📝 목차

  1. 조건문
  2. 반복문
  3. 분기문

1. 조건문

조건에 따라 다른 문장이 수행되도록 함

📌 if 문

  • if 문

true 또는 false 와 관계없이 조건절이 모두 실행된다.

if (num > 0) { 
	System.out.println("양수"); // 결과값이 true 일 때 수행
}
  • if - else 문
if (num % 2 == 0) {
	System.out.println("짝수"); // 결과값이 true 일 때 수행
} else {
	System.out.println("홀수"); // 결과값이 false 일 때 수행
}
  • if - else if - else 문

조건문이 true 일 경우 이후 조건은 실행하지 않는다.

if (month == 1 || month == 2 || month == 12) { 
	season = "겨울"; // 조건식 1 결과값이 true 일 때 수행
} else if (month >= 3 && month <= 5) { 
	season = "봄"; // 조건식 2 결과값이 true 일 때 수행
} else if (month >= 6 && month <= 8) { 
	season = "여름"; // 조건식 3 결과값이 true 일 때 수행
} else if (month >= 9 && month <= 11) { 
	season = "가을"; // 조건식 4 결과값이 true 일 때 수행
} else { 
	season = "해당하는 계절이 없습니다."; // 모두 false 일 때 수행
}
  • 중첩 if 문

잘못 입력한 경우를 먼저 작성하면 쉽게 구현이 가능하다.

// 나이를 입력 받자마자 검사
if (age < 0 || age > 100) {
	result = "잘못 입력 하셨습니다.";
} else {
	// else 내부에서는 age가 정상 입력으로 판단됨
	if (age < 12) {
		result = "적정 연령이 아닙니다.";
	} else {
		System.out.print("키 입력 : ");
		double height = sc.nextDouble();

		if (height < 100 || height > 200) {
			result = "잘못 입력하셨습니다.";
		} else if (height < 140.0) {
			result = "적정 키가 아닙니다.";
		} else {
			result = "탑승 가능";
		}
	}
}

if (month == 1 || month == 2 || month == 12) {
	season = "겨울";
	if (temperature <= -15) {
		season += " 한파 경보";
	} else if (temperature <= -12) {
		season += " 한파 주의보";
	}
} else if (month >= 3 && month <= 5) {
	season = "봄";
} else if (month >= 6 && month <= 8) {
	season = "여름";
	if (temperature >= 35) {
		season += " 폭염 경보";
	} else if (temperature >= 33) {
		season += " 폭염 주의보";
	}
} else if (month >= 9 && month <= 11) {
	season = "가을";
} else {
	season = "해당하는 계절이 없습니다.";
}

📌 switch 문

조건식 하나로 많은 경우의 수를 처리할 때 사용한다.
조건식의 결과는 정수 또는 문자 또는 문자열만 가능하다.

switch (num % 5) {
case 1: // 결과값이 1 이면
	team = "1조"; break; // 실행 후 종료
case 2:
	team = "2조"; break;
case 3:
	team = "3조"; break;
case 4:
	team = "4조"; break;
default: // 일치하는 case 문이 없으면 
	team = "다시"; // 실행
}

// Math.random() 난수 발생 범위 : 0.0 <= random < 1.0
// 발생한 난수의 자료형 : double
// 실수에서 정수 강제 형변환으로 소수점 버림

int random = (int)(Math.random() * 3); // 0.0 <= random * 3 < 3.0 (0, 1, 2)

switch (random) {
	case 0 : result = "백팀"; break;
	case 1 : result = "청팀"; break;
	default : result = "홍팀"; break;
}

2. 반복문

특정 문장들을 반복해서 수행

📌 for 문

  • for 문
for (int i = 1; i <= 10; i++) {
	System.out.println(i + " 출력"); // 1부터 10까지 출력
}
  • 중첩 for 문
// 전체 구구단 출력
for (int dan = 2; dan <= 9; dan++) {
	for (int i = 1; i <= 9; i++) {
		System.out.printf("%d X %d = %d\n", dan, i, dan * i);
	}
	System.out.println(); // 개행
}

// 입력받은 정수에 따른 역순 모양 출력
for (int x = input; x >= 1; x--) { // x = 3, 2, 1
	for (int i = x; i >= 1; i--) {
		System.out.print(i);
	}
	System.out.println(); // 개행
}
  • 향상된 for 문

배열에서 꺼낸 요소 하나를 저장할 변수 : 배열명
배열의 처음 인덱스부터 마지막 인덱스까지 순차 접근한다.

for (int s : sumArr) {
	if (s > max) max = s;
	if (s < min) min = s;
}

📌 while 문

  • while 문
int i = 1;
while (i <= 10) {
	System.out.println(i + "출력"); // 1부터 10까지 출력
	i++;
}
  • do while 문
int i = 1;
do { // 무조건 한 번은 실행됨
	System.out.println(i + "출력"); // 1부터 10까지 출력
    i++;
} while (i <= 10); 

3. 분기문

📌 break 문

반복문에서 break 문 자신이 포함된 가장 가까운 반복문을 빠져나가는 구문이다.

switch (month) { // break 미작성 시 다음 case 연달아 수행
  case 12 : case 1 : case 2 : result = "겨울"; break; 
  case 3 : case 4 : case 5 : result = "봄"; break; 
  case 6: case 7 : case 8 : result = "여름"; break;
  case 9 : case 10 : case 11 : result = "가을"; break;
  default : result = "잘못 입력 하셨습니다."; 
}

📌 continue 문

반복문 내에서만 사용 가능하며 continue 아래 부분은 실행하지 않고 반복문을 다시 실행한다.
for 문의 경우 증감식으로 이동하고 while 문의 경우 조건식으로 이동한다.
전체 반복 중에 특정 조건을 만족하는 경우를 제외하고자 할 때 유용하다.

for (int i = 1; i <= 10; i++) {
	if (i % 2 == 0) { // 짝수일 경우
		continue; // 출력없이 조건식으로 이동
	}
    System.out.println(i + "출력");
}
profile
현수의 개발 저장소

0개의 댓글