조건문 / 반복문
16 Aug 2021 -
3 minute read
if
if(조건식){
수행문 //조건식이 true인 경우 수행문이 수행됨
} //조건식이 false라면 수행문 수행되지 않음
if - else
if(조건식){
조건식이 true일 때 수행되는 수행문
} else{
조건식이 true가 아닐 때 수행되는 수행문
}
if - else if - else
if(조건식1){
조건식1이 true일 때 수행하고 전체 조건문 빠져나감
} else if(조건식2){
조건식2가 true일 때 수행하고 전체 조건문 빠져나감
} else{
위 조건이 모두 해당되지 않는 경우 수행
}
switch - case
-
if-else if-else문을 사용할 때 복잡하고 번거로운 부분을 가독성 좋게 구현
-
비교 조건이 특정 값이나 문자열인 경우
-
문자열도 가능
switch (입력변수) {
case 입력값1:
실행문;
break;
case 입력값2:
실행문;
break;
...
default:
실행문;
break;
//case 모두 만족하지 않을 때 default 실행문 출력
}
//각 조건이 만족되면 break문을 사용하여 switch 블럭 빠져나옴
Enhanced Switch
- Java14부터 지원
- 쉼표(,)를 사용해 여러 조건을 한 번에 처리
- ' -> ' 또는 ' : ' 모두 사용 가능
- 반환값 'yeild' 키워드 사용, break 필요 없음
- 반환값이 없는 경우 { }블록 사용하지 않음<br>
ex) `case 1, 3, 5, 7 -> syso("홀수입니다.")`
- ex)
```java
import java.util.Scanner;
public class SwitchTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("달을 입력하세요.");
int month = scanner.nextInt();
scanner.close();
int day = switch (month) {
case 1, 3, 5, 7, 8, 10,12 -> {
yield 31;
}
case 4,6,9,11 -> {
yield 30;
}
case 2 -> {
yield 28;
}
default -> {
yield 0;
}
};
System.out.println(month + "월은 " + day + "일입니다.");
}
}
```
while
-
조건이 true인 동안 반복 수행, 조건이 맞지 않으면 반복하던 수행을 멈춤
-
while은 조건식이 false가 나올 때까지 계속 반복되기 때문에 조건식을 false로 만드는 식이 실행문에 반드시 포함되어야 한다. 그렇지 않으면 무한 루프!
while(조건식){
수행문
}
do - while
- 조건과 상관 없이 수행을 한 번 하고나서 조건을 체크
do{
수행문1;
} while(조건식){
수행문2;
}
for
for(초기화식; 조건식; 증감식){
수행문;
}
-
초기화식, 증감식 하나 이상 쓸 수 있음
(int i = 0 ; i < 10 ; i++, count++)
-
초기화식, 조건식, 증감식은 상황에 따라 생략 가능
Enhanced For
for(대입받을변수:배열){
수행문;
}
-
배열의 n개 요소를 0부터 n-1까지(처음부터 끝까지) 순차적으로 순회할 때 간단하게 사용할 수 있음
-
배열에서만 사용 가능
-
배열 값 변경 불가
break
-
감싸고 있는 제어문의 블록을 빠져 나오는 기능
-
여러 반복문이 중첩되어 있는 경우 break문이 포함되어 있는 반복문만 빠져나옴
continue
-
조건이 true인 경우, 이후 반복문 블럭 내부의 다른 수행문들을 수행하지 않음
-
ex) 1부터 30까지 숫자 중 3의 배수를 출력하기
public class ContinueTest { public static void main(String[] args) { int num; for( num = 1; num <= 30; num++) { if( (num % 3) != 0) continue; System.out.println(num); } } }
중첩반복문
- 구구단 출력하기 (for)
public class NestedLoopFor {
public static void main(String[] args) {
//중첩반복문 : 구구단 출력하기 (for)
int dan = 2;
int count = 1;
for ( ; dan <= 9; dan++) {
for (count = 1; count <= 9; count++) {
System.out.println( dan + "x" + count + "=" + dan*count );
}
System.out.println();
}
}
}
- 구구단 출력하기 (while)
public class NestedLoopWhile {
public static void main(String[] args) {
//중첩반복문 : 구구단 출력하기 (while)
int dan = 2;
int count = 1;
while ( dan <= 9 ) {
count = 1;
while ( count <= 9 ) {
System.out.println( dan + "x" + count + "=" + dan*count );
count++;
}
dan++;
System.out.println();
}
}
}