본문 바로가기
JavaStudy

d.loop

by nyamnmm 2024. 7. 5.
for

 

 

반복문
  • 프로그램 흐름을 제어하는 제어문 중 하나.
  • 어떤 실행코드를 반복적으로 수행시켜 준다.
  • 반복문 안에서 선언된 변수는 반복문 밖에서는 쓸 수 없다.

 

for문
  • [표현법] for(초기식; 조건식; 증감식) { 반복적으로 실행시키고자 하는 코드 더미 }
    • 초기식
      : 반복문이 수행될 때 "처음에 단 한 번만 실행하는 구문"

      (반복문 안에서 사용될 변수를 선언 및 초기화하는 작업)
    • 조건식
      : "반복문이 수행될 조건"을 작성하는 구문.
      조건식이 true일 경우 해당 반복을 실행, flase가 되는 순간 반복문을 탈출한다.
      (보통 초기식에서 제시된 변수를 가지고 조건식을 정한다.)
    • 증감식
      : 반복문을 제어하는 변수 값을 증감시키는 구문
  • 초기식, 조건식, 증감식에 쓰이는 변수는 전부 같을 필요는 없으나, 초기식에 제시된 변수로 통일하는 게 일반적이다.
    (조건식의 변수는 다른 걸 쓰더라도 초기식에 제시된 변수로 증감식을 작성하는 게 좋다.)
    ▷ for(int i = 0; i <= 10; i++;) {
       System.out.print(i + "\t");
      }
package d.loop;

import java.util.Scanner;

public class For {
	public static void main(String[] args) {
    	// 1에서 100까지의 총합을 구하기
        int sum = 0;
    	for(int i = 1; i <= 100; i++) {
        	sum += i;
    	}
        
        System.out.println("1에서 100까지의 총합 : " + sum + "\n");
        
        // 정수 n을 입력 받아 n부터 100까지 짝수의 개수를 구하기
        Scanner sc = new Scanner(System.in);
        System.out.print("정수 입력 : ");
        int n = sc.nextInt();
        int cnt = 0;
        
        for(int i = n; i < 101; i++) {
        	if(i % 2 == 0) {
            	cnt++;
            }
        }
        
        System.out.printf("%d부터 100까지 짝수의 개수 : %d \n\n", n, cnt);
        sc.close();
        
        // 구구단 2단부터 9단까지 출력
        for(int i = 2; i < 10; i++) {
        	System.out.printf("===== %d단 =====\n", i);
        	for(int j = 1; j < 10; j++) {
            	System.out.printf("%d * %d = %d \n", i, j, (i * j));
            }
            System.out.println();
        }
    }
}

 

 


 

while

 

 

while문
  • for문과는 다르게 증감식을 반복코드 안에 작성해줘야 한다.
  • [표현법] while(조건식) { 반복적으로 실행시키고자 하는 코드 더미 및 증감식 }
  • 조건식을 'true'로 하는 것으로 무한 반복하는 반복문을 만들 수 있다.
    ▷ while(true) {
       System.out.println(i);
       i++;
      }

 

do-while문
  • [표현법] do { 반복적으로 실행시키고자 하는 코드 더미 및 증감식  } while(조건식);
    ▷ do {
       System.out.println(i);
       i++;
      } while(i != 10);
  • 기존의 for/while문은 처음 수행될 때 조건검사 후 true일 경우에만 반복코드를 실행하지만,
    do-while문의 경우 첫 실행은 조건검사 없이 무조건 실행한다.
  • 조건식은 반복코드 실행 후에 검사한다.
  • 조건식이 true일 경우 : 조건식이 false가 될 때까지 해당 코드를 반복한다.
  • 조건식이 false일 경우 : 즉시 반복문을 탈출한다.

 

package d.loop;

import java.util.Scanner;

public class While {
	public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
        
    	// while <0을 입력할 때까지 입력한 값을 계속 더하기>
        int sum = 0, cont = 1;
        int num = 1;
        while(num != 0) {
        	System.out.printf("%d번째 정수 입력 : ", cont);
            num = sc.nextInt();
            sum += num;
            cont++;
        }
        
        System.out.println("입력한 값의 합계 : " + sum + "\n");
        
        
        // do-while <1 ~ 10까지의 랜덤 숫자 맞추기>
        int random = (int)(Math.random() * 10 + 1);
        int answer = 0;
        cont = 0;
        do {
        	System.out.printf("숫자 맞추기 ( %d회차 ): ", ++cont);
        	answer = sc.nextInt();
            if(answer < 1 || answer > 10) {
            	System.err.println("1부터 10까지의 숫자를 입력해주세요.\n");
            	cont--;
            }
        } while(answer != random);
        
        System.out.println("축하드립니다! 정답을 맞추셨습니다~!\n");
        sc.close();
    }
}

 


 

jump

 

 

break
  • 반복문, switch문 안에서 사용되는 분기문
  • break가 실행되는 순간 현재 속해있는 반복문 또는 switch문을 강제로 탈출한다.
    (하나의 반복문만 탈출하기 때문에, 중첩이 되어있는 경우엔 break문이 실행된 해당 반복문만 탈출한다.)
  • break 이후의 반복문, switch문 코드는 실행되지 않으며, 다음 코드부터 진행된다.
  • 특정 조건을 만족하면 반복문이 종료되게 할 때 유용하다.
  • [표현법] break;

 

continue
  • 반복문에서 사용되는 분기문
  • continue 실행 시 그 뒤의 반복문의 코드를 실행하지 않고, 곧바로 다시 반복문의 상단으로 이동해 실행한다.
    (break문과는 다르게 반복문을 빠져나가지 않는다.)
  • 전체 반복 중에 특정 조건을 만족하는 경우를 제외하고자 할 때 유용하다.
  • [표현법] continue;

 

package d.loop;
import java.util.Scanner;

public class Jump {
	public static void main(String[] args) {
    	// break <입력한 값의 총합 구하기>
        Scanner sc = new Scanner(System.in);
        int sum = 0;
        
        System.out.println("===== 5개의 숫자 계산기 =====");
        System.out.println("1. 5개의 정수를 입력하세요.");
        System.out.println("2. 0을 입력하면 5개를 다 입력하지 않아도 종료됩니다.\n");
		for(int i = 1; i <= 5; i++) {
			System.out.print("정수 입력 : ");
			int num = sc.nextInt();
			if(num == 0) {
				break;
			}
			sum += num;
		}
		
		System.out.println("입력한 값의 총합 : " + sum + "\n");
        
       	// continue <랜덤 숫자 맞추기 ~응용편~>
        System.out.println("===== 랜덤 숫자 맞추기 =====");
        System.out.println("1 ~ 10 사이의 랜덤한 숫자를 맞춰보세요.");
        
        int cnt = 0;
		int random = (int)(Math.random() * 10 + 1);
		int user;
		
		do {
			System.out.print("정수 입력 : ");
			user = sc.nextInt();
			
			if(user < 1 || user > 10) {
				System.out.println("1 ~ 10 사이의 정수만 입력해주세요.\n");
				continue;
			}
			
			cnt++;
		} while(user != random);
		
		System.out.printf("정답입니다! %d회차만에 맞추셨습니다!\n", cnt);
        
        // break + continue <구구단 계산 놀이>
        System.out.println("===== 구구단 계산 놀이 =====");
        System.out.println("1. 주어진 식을 보고 정답을 입력하세요.");
        System.out.println("2. 틀리면 다시 입력합니다.");
        System.out.println("3. 맞추면 점수를 얻고 다음 문제가 나타납니다.");
        System.out.println("4. 종료시 점수가 공개됩니다.");
        
        int score = 0;
        while(true) {
        	int a = (int)(Math.random() * 9 + 1);
            int b = (int)(Math.random() * 9 + 1);
            
            System.out.printf("\n%d * %d = ? : ", a, b);
            int answer = sc.nextInt();
            int cont = 1;
            
            while(answer != (a * b)) {
        		System.out.println("오답입니다... 다시 입력하세요.\n");
        		System.out.printf("%d * %d = ? : ", a, b);
    			answer = sc.nextInt();
        	}
            
        	score += 10;
        	System.out.println("정답입니다!");
        	
        	System.out.print("게임을 종료하시려면 0을 입력해주세요. 계속하시려면 아무 숫자나 누르시면 됩니다. : ");
        	cont = sc.nextInt();
        	
        	if(cont != 0) {
        		continue;
        	}
        	System.out.println("\n게임이 종료되었습니다.");
            System.out.println("점수 : " + score);
            break;
           }
           
           sc.close();
    }
}

.

 

'JavaStudy' 카테고리의 다른 글

e.array  (0) 2024.07.08
c.control  (0) 2024.07.04
b.operator  (0) 2024.07.03
a.basic  (1) 2024.07.01