제어문을 공부했다면 필수 코스인 별 출력하기
문제 9 에서 처음에 공백 출력 때문에 헷갈렸는데 풀다 보니 예전에 풀었던 기억이 났다 ✍️
- 조건문
- 반복문
- 분기문
조건에 따라 다른 문장이 수행되도록 함
true 또는 false 와 관계없이 조건절이 모두 실행된다.
if (num > 0) {
System.out.println("양수"); // 결과값이 true 일 때 수행
}
if (num % 2 == 0) {
System.out.println("짝수"); // 결과값이 true 일 때 수행
} else {
System.out.println("홀수"); // 결과값이 false 일 때 수행
}
조건문이 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 (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 (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;
}
특정 문장들을 반복해서 수행
for (int i = 1; i <= 10; i++) {
System.out.println(i + " 출력"); // 1부터 10까지 출력
}
// 전체 구구단 출력
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 (int s : sumArr) {
if (s > max) max = s;
if (s < min) min = s;
}
int i = 1;
while (i <= 10) {
System.out.println(i + "출력"); // 1부터 10까지 출력
i++;
}
int i = 1;
do { // 무조건 한 번은 실행됨
System.out.println(i + "출력"); // 1부터 10까지 출력
i++;
} while (i <= 10);
반복문에서 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 아래 부분은 실행하지 않고 반복문을 다시 실행한다.
for 문의 경우 증감식으로 이동하고 while 문의 경우 조건식으로 이동한다.
전체 반복 중에 특정 조건을 만족하는 경우를 제외하고자 할 때 유용하다.
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) { // 짝수일 경우
continue; // 출력없이 조건식으로 이동
}
System.out.println(i + "출력");
}