조건문 / 반복문
    
         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();
		}
	}
}