Loop Control (반복문)

Zino·2022년 12월 9일

Java

목록 보기
6/26
post-thumbnail

🔍 조건문

  • 반복문은 어떤 작업이 반복적으로 수행되도록 할 때 사용된다.

📖 종류

  • for문
  • while문
  • do - while문

    💡 for문과 while문은 구조와 기능이 유사하여 어느 경우에나 서로 변환이 가능하다.


for문

  • 반복 횟수가 정해진 반복일 때 주로 사용.

✍🏻 작성법

for(초기식; 조건식; 증감식) {

     수행될 코드;

}

✍🏻 작성법 (중첩 반복문)

for(초기값1; 조건식1; 증감식1) {

	수행될 코드1;
	for(초기값2; 조건식2; 증감식2) {

		수행될 코드2;

	}
	수행될 코드3;

	}
}

for문에 진입하면 수행될 코드1을 먼저 수행하고 -> 두 번째 for문에 진입하면 ->
조건식2가 false가 될 때까지 수행될 코드2를 수행 후 나오면 ->
수행될 코드3을 수행하고 -> 조건식1로 돌아와 true면 다시 반복
💡 2회전 이상부터는 모두 2회전과 동일하고 조건식이 false가 나올 때까지 문장 수행

  • 초기식 : for문을 제어하는 용도의 변수 선언
  • 조건식 : for문의 반복 여부를 지정하는 식.(다음 반복 진행해?) 보통 초기식에 사용된 변수를 이용하여 조건식을 작성함.
  • 증감식 : 초기식에 사용된 변수를 for문이 끝날 때 마다 증가 or 감소 시켜
    조건식의 결과를 변하게 하는 식.

💬 예시

for(int i = 1; i <= 10; i++) {

	System.out.println(i + “ 출력");

}

📝 예제 1

public void ex1() {
		//1~10 출력하기
		//-> 1부터 10까지 1씩 증가하며 출력
		// * 반복문은 조건식이 true 일 때만 반복
		
		for( int i = 1; i <= 10 ; i++){
		//  1) 초기식 	2) 조건식  4) 증감식
			System.out.println("i: " + i);
			// 3) 반복 수행될 코드
		}
}

📝 예제 2

public void ex2() {
		//3에서 7까지 1씩 증가하며 출력
		//3 4 5 6 7
		for(int i = 3; i <= 7; i++) {
			System.out.println(i);
		}
}

📝 예제 3

public void ex3() {
		//1부터 (**입력받은 수까지) 1씩증가하며 출력
		Scanner sc = new Scanner(System.in);
		System.out.print("숫자를 입력하세요 : ");
		int num = sc.nextInt();
		
		for(int i = 1; i <= num; i++ ) {
			System.out.println("출력: " + i);
		}
		
}

📝 예제 4

public void ex4() {
		// 1.0부터 입력받은 실수 까지 0.5씩 증가하며 출력
		Scanner sc = new Scanner(System.in);
		System.out.print("숫자를 입력하세요 : ");
		double num = sc.nextDouble();
		
		for(double i = 1.0; i <= num; i += 0.5 ) {
			System.out.println("출력: " + i);
		}
}

📝 예제 5

public void ex5() {
		//영어 알파벳 A 부터 Z까지 한줄로 출력
		//char 자료형은 ? 유니코드
		
		/*for(int i = 'A'; i <= 'Z'; i++) {
			System.out.print((char)i);
			}*/
			
		for(char i = 'A'; i <= 'Z'; i++ ) {
			System.out.print(i);
		}
		
}

📝 예제 6

public void ex6() {
		//응용문제!
		//1부터 10까지 모든 정수의 합 구하기
		// => 합계 :55
		int sum = 0; //반복되어 증가되는 i값의 합계를 저장할 변수
					//0으로 시작하는 이유: 아무것도 더하지 않음으로 정확히 결과를 도출 할 수 있기 때문에
		
		for(int i = 1; i <= 10; i++ ) {
			
			sum += i;
			// sum = sum + i;
		}
		
		System.out.println("합계 :" + sum);
}

📝 예제 7

public void ex7() {
		// 1부터 20까지 1씩 증가하면서 출력
		// 단, 5의 배수에 () 를 붙여서 출력
		// ex) 1 2 3 4 (5) 6 7 8 9 (10) 11 ...
		
	 
		
		
		for(int i = 1; i <= 20; i++) {
			
			if(0 == i % 5) {
				System.out.print("(" + i + ") ");
			}else {
				System.out.print( i + " ") ;
			}			
		}	
}

📝 예제 8

//****중첩 반복문****
public void ex8() {
		//구구단 모두 출력하기
		
		for(int dan = 2; dan <= 9; dan++ ) {
				
			for(int i = 1; i <= 9; i++) {	
				System.out.printf("%2d X %2d = %2d\n", dan, i , dan * i);
			}
			System.out.println();//줄바꿈
		}
}

📝 예제 9

public void ex9() {
		//구구단 역순 추력
		// 9단~2단까지 역방향
		//곱해지는 수는 1~9
		
		for(int dan = 9; dan >=2; dan--) {// 단 9 -> 2
			
			for(int i = 1; i <= 9; i++) {// 수 1 -> 9
				System.out.printf("%2d X %2d = %2d\n", dan , i , dan * i);
			}
			System.out.println();
		}
}

📝 예제 10

public void ex10() {
		//12345
		//12345
		//12345
		//12345
		//12345
		for(int x = 1 ; x <= 5; x++) {//5바퀴 반복하는 for문
			for(int y = 1; y <=5; y++) {//12345 한 줄 출력하는 for문
				System.out.print(y);			
			}
			System.out.println();
		}
		System.out.println("=============================");
		//54321
		//54321
		//54321
		for(int x = 1 ; x <= 3; x++) {//5바퀴 반복하는 for문
			for(int y = 5; y >= 1; y--) {//12345 한 줄 출력하는 for문
				System.out.print(y);			
			}
			System.out.println();
		}
}

📝 예제 11

public void ex11() {
		//1
		//12
		//123
		//1234
		//==========
		//4321
		//321
		//21
		//1
		
		for(int x = 1; x <= 4; x++) {
				
			for(int y = 1; y <= x; y++) {
				System.out.print(y);
			}
			System.out.println();
		}
		for(int x = 4; x >= 1; x--) {			
			for(int y = x; y >= 1; y--) {
				System.out.print(y);
			}
			System.out.println();
		}
}	
	

while문

  • 반복 횟수가 정해지지 않은 반복일 때 주로 사용.
  • 별도의 초기, 증감식이 존재하지 않고, 반복 종료 조건을 자유롭게 설정하는 반복문.
  • 확실히 언제 반복이 끝날지 모르지만, 언젠가 반복 조건이 false가 되는 경우 반복을 종료함.

✍🏻 작성법

while(조건식) {
	수행될 코드; //조건식이 true일 동안 반복 수행될 구문
	[증감식 or 분기문]; //ex) i++ or break

}

조건식이 true일 때 문장 수행 -> 문장 수행이 끝나면 조건식 다시 확인 후
->true면 수행, 조건식이 false가 될 때까지 수행 -> 조건식이 false가 되면 반복문 종료
💡 { } 안에 조건을 벗어나게 할 연산(증감식, 분기문) 필요

💬 예시

int i = 1;

	while(i <= 10) {

	System.out.println(i + " 출력");
	i++;

}

📝 예제 1

public void ex1() {
		Scanner sc = new Scanner(System.in);
		int input = 0;
		
		while(input != 9 ) { //input이 9가 아닐때 반복
			System.out.println("=======키오스크=======");
			System.out.println("=======메뉴선택=======");
			System.out.println("1. 떡볶이");
			System.out.println("2. 김밥");
			System.out.println("3. 쫄면");
			System.out.println("9. 종료");
			
			System.out.println("메뉴 선택 >> ");
			input = sc.nextInt();
			
			switch(input) {
			case 1: System.out.println("떡볶이 주문 완료!"); break;
			case 2: System.out.println("김밥 주문 완료!"); break;
			case 3: System.out.println("쫄면 주문 완료!"); break;
			case 9: System.out.println("키오스크를 종료합니다!"); break;
			default : System.out.println("잘못 입력하셨습니다");
			
			}
		}
}

📝 예제 2

public void ex2() {
		//입력되는 모든 정수의 합 구하기
		//단,0이 입력되면 반복 종료 후 결과 출력
				//->0이 입력되지 않으면 계속반복
		Scanner sc = new Scanner(System.in);
		int input = 1;
		int sum = 0;
		
		while(input != 0) {
			System.out.print("정수 입력 : ");
			input = sc.nextInt();
			
			sum += input; //입력받은 sum 누적
			
			}
		System.out.println("합계 : " + sum);
		
}

📝 예제 3

public void ex3() {
		//1부터 입력한 값의 합
		//단, 0을 초과한 숫자 입력
		// => 0이하의 숫자를 입력할 시 "1이상의 숫자를 입력해주세요" 문구 출력
		//EX) 입력값 : 5
		// => 1 + 2 + 3 + 4 + 5 = 출력해야하는 값
		//EX) 입력값 : 10
		// => 1 + 2 + 3 .... + 10 = 출력해야하는 값
		Scanner sc = new Scanner(System.in);
		System.out.print("숫자를 입력하세요 :");
		int input = sc.nextInt();
		int sum = 0;
		
		if(input > 0) {
			int i = 1;
			
			while(i <= input) {
				sum += i;
				i++;
			}
			System.out.println("1부터" + input + "까지의 합은 " + sum + "입니다.");
		}else {
			System.out.println("1이상 숫자를 입력하세요");
		}
}

do - while문

  • 반복 횟수가 정해지지 않은 반복일 때 주로 사용.
  • 반복 여부를 결정짓는 조건식 아래에 제시 -> 무조건 한번은 실행

    💡 for & while 문은 조건식이 처음에 제시되므로 한 번도 실행이 안될 수 있음.

✍🏻 작성법

do {

	수행될 코드;
	[증감식 or 분기문];

} while(조건식);

do 안의 내용 먼저 실행 -> 조건식 확인 후 true면 -> 문장 수행, false면 종료

💡 { } 안에 조건을 벗어나게 할 연산(증감식, 분기문) 필요
💡 while과 do~while의 차이점
- do~while은 조건문이 true가 아니더라도
- 그는 무조건 한 번 이상 수행
- while 뒤에 ; 꼭 필요

💬 예시

int i = 1;

do {

System.out.println(i + "출력");
i++;
} while(i <= 10);

📝 예제

public void ex4() {
		Scanner sc = new Scanner(System.in);
		
		int input = 0;
		int sum = 0;
		
		//do ~while 문
		// -> 최소 한 번은 수행하는 반복문
		
		do {
			System.out.print("정수 : ");
			input = sc.nextInt();
			sum += input;
		}while(input != 0); 
		
		System.out.println("합계: " + sum);
}

profile
Willingness to be a fool!

0개의 댓글