ドア


package while_statement;

public class Ex {

	public static void main(String[] args) {
		/*
		 * while문
		 * - for문과 달리 조건식의 위치만 정해져있고, 초기식과 증감식의 위치는 유동적인 반복문
		 *   => 초기식은 while문 보다 윗쪽(앞)에 위치해야하며
		 *      증감식은 while문 안쪽에 위치하고, while문 안쪽에서 위치는 변할 수 있음
		 * - 주로 반복 횟수가 정해져 있지 않고, 어떤 조건에 따라 변하는 반복문에 사용
		 *   (for문은 주로 반복 횟수가 정해져 있는 경우 사용)
		 * - for문과 while문은 상호 100% 변환 가능
		 * 
		 * < 기본 문법 >
		 * 초기식; // 최소한 while문 보다 윗쪽에 위치해야함
		 * 
		 * while(조건식) {
		 * 		증감식; // 실행문 위에 올 수도 있고
		 * 
		 * 		실행할 문장들...
		 * 
		 * 		증감식; // 실행문 아래에 올 수도 있다
		 * }
		 * 
		 */
		
		// for문을 사용하여 "Hello, World!" 문자열 10번 반복 출력
		//   초기식    조건식   증감식
		for(int i = 1; i <= 10; i++) {
			System.out.println(i + " : Hello, World!"); // 실행문
		}
		
		System.out.println("--------------------------");
		// while 문을 사용하여 "Hello, World!" 문자열 10번 반복 출력
		int i = 1; // 초기식
		
		while(i <= 10) { // 조건식
			System.out.println(i + " : Hello, World!"); // 실행문
		
			i++; // 증감식
		}
		
		System.out.println("--------------------------");
		
		// 정수 1 ~ 10 까지 1씩 증가하면서 i값 출력(1 2 3 4 5 6 7 8 9 10)
		i = 1;
		
		while(i <= 10) {
			System.out.print(i + " ");
			i++;
		}
		
		System.out.println("");
		System.out.println("--------------------------");
		
		// 정수 1 ~ 10 까지 2씩 증가하면서 i값 출력(1 3 5 7 9)
		i = 1;
		
		while(i <= 10) {
			System.out.print(i + " ");
			i += 2;
		}
		
		System.out.println("");
		System.out.println("--------------------------");
		
		// 정수 10 ~ 1 까지 1씩 감소하면서 i값 출력(10 9 8 7 6 5 4 3 2 1)
		i = 10;
		
		while(i >= 1) {
			System.out.print(i + " ");
			i--;
		}
		
		System.out.println();
		System.out.println("=========================================");
		
		for(i = 1; i <= 10; i++) {
			System.out.println(i + " : Hello, World!"); // 실행문
		}
		
		System.out.println("for문 종료 후 i값 = " + i);
		
		System.out.println("----------------");
		
		// while 문은 증감식 위치에 따라 실행되는 과정도 달라질 수 있다!
		i = 1; // 초기식
		
		while(i <= 10) { // 조건식
			i++; // 증감식(실행문보다 윗쪽에 위치)
			// => 초기식 값을 가장 먼저 1 증가시킨 후 실행문을 실행하게 되므로
			//    제어변수 i값이 1 -> 2로 증가한 후 출력문이 실행됨
			
			System.out.println(i + " : Hello, World!"); // 실행문
		
//			i++; // 증감식(실행문보다 아래쪽에 위치)
			// => 증감식보다 실행문이 먼저 실행되므로, 초기식 1을 먼저 출력한 후
			//    제어변수 값이 1 -> 2 로 증가됨
			
		}
		
		System.out.println("while문 종료 후 i값 = " + i);
		// => 전체 반복 횟수는 10회로 동일하고 종료 후 i값도 11로 동일하나
		//    실행 과정에서 제어변수 i값이 다를 수 있으므로
		//    제어변수를 횟수(카운팅 용도)로만 사용하지 않고 직접 값을 사용하는 경우 주의해야한다!
		
		System.out.println("----------------");
		
		// 1 ~ 10 까지 1씩 증가하면서 반복할 경우
		// 증감식 가장 먼저 실행되는 경우에는 초기식을 0으로 시작하면 0 -> 1 로 변화된 값으로 시작되며,
		// 조건식을 9까지만 지정하면 9 -> 10 으로 변화된 값이 출력된 후 종료됨
		i = 0; // 초기식
		
		while(i <= 9) { // 조건식
			i++; // 증감식(실행문보다 윗쪽에 위치)
			
			System.out.println(i + " : Hello, World!"); // 실행문
		
//			i++; // 증감식(실행문보다 아래쪽에 위치)
		}
		
		System.out.println("while문 종료 후 i값 = " + i);
		
	}

}