JAVA_반복문 (for, while)

JW__1.7·2022년 7월 23일
0

JAVA 공부일지

목록 보기
5/30

for문

  • 어떤 실행문을 여러 번 반복해서 실행하는 경우에 사용한다.
  • 조건문을 만족하면 계속해서 실행한다.
  • 실행문은 중괄호 { }로 묶어서 표시한다.
  • 실행문이 단일 문장인 경우 중괄호 { } 생략 가능하다.
for(초기문; 조건문; 증감문) {
	실행문
}
  • 초기문은 최초 1번만 실행한다.
  • 초기문 → 조건문 → 실행문 → 증감문→ 조건문 → 실행문 → 증감문 ... 으로 반복 처리한다.
  • 배열이나 컬렉션 처리에서 많이 사용한다.
  • 연속된 숫자를 생성할 때 주로 사용한다.

1부터 10까지 출력

	for(int n = 1; n <= 10; n++) {
		System.out.print(n);	// 12345678910 출력
	}

10부터 1까지 출력

	for(int m = 10; m > 0; m--) {
		System.out.print(m);	// 10987654321 출력
	}

구구단 7단 출력

	for(int i = 1; i < 10; i++) {
		System.out.println("7 X " + i + " = " + (7 * i));
	} 
/* 
7 X 1 = 7
7 X 2 = 14
7 X 3 = 21
7 X 4 = 28
7 X 5 = 35
7 X 6 = 42
7 X 7 = 49
7 X 8 = 56
7 X 9 = 63

1 ~ 100 사이의 모든 3의 배수만 출력

	for(int j = 1; j <= 100; j++) {
		if(j % 3 == 0) {
			System.out.print(j + " ");
		}
	}
// 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99

1 ~ 100 모든 정수 더하기

	int total = 0;
	for(int i = 1; i <= 100; i++) {
		total += i;	
	} 
	System.out.print("전체 합계 : " + total);   // 전체 합계 : 5050

begin과 end 중 누가 큰 지 모르는 상황에서
begin을 end보다 항상 작은 값으로 바꾼 뒤, begin ~ end 모든 정수 더하기

	int begin = 100;
	int end = 1;
		
	if(begin > end) {
		int temp;
		temp = begin;
		begin = end;
		end = temp;
	}
		int sum = 0;
		for(int n = begin; n <= end; n++) {
			sum += n;
		}
		System.out.println(sum);	// 5050

평점(1~5)에 따른 별(★) 출력

	int point = 5;
	String star = "";
	
    // n=0으로 초기화하여 n < point라 했다.
    // 만약 n=1로 초기화하면 n <= point로 작성할 수 있다.
	for(int n = 0; n < point; n++) {		
		star += "★";
	}	
	System.out.print(star);		// ★★★★★

이중 for문

1일차 1교시
1일차 2교시
...
1일차 8교시
2일차 1교시
...
3일차 8교시

	for(int day = 1; day <= 3; day++) {
		for(int hour = 1; hour <= 8; hour++) {
			System.out.println(day + "일차 " + hour + "교시");
		}
	}

2단부터 9단까지

	for(int i = 2; i <= 9; i++) {
		for(int j = 1; j <= 9; j++) {
			System.out.println(i + " X " + j + " = " + i*j);
		}
	}

2단부터 5x5=25까지 _ 기본풀이

	for(int i = 2; i <= 5; i++) {
		for(int j = 1; j <= 9; j++) {
			System.out.println(i + " X " + j + " = " + i*j);
			if(i == 5 && j == 5) {
				break;
			}	
		}
	}	

2단부터 5x5=25까지 _ 라벨(label)을 이용한 풀이

	outer: for(int i = 2; i <= 9; i++) {
		for(int j = 1; j <= 9; j++) {
			System.out.println(i + " X " + j + " = " + i*j);
			if(i == 5 && j == 5) {
				break outer;
			}	
		}
	}	

2x1=2 3x1=3 ... 9x1=9
2x2=4 3x2=6 ... 9x2=18
...

	for(int n = 1; n <= 9; n++) {
		for(int dan = 2; dan <= 9; dan++) {
			System.out.print(dan + " X " + n + " = " + dan*n + "\t");
		} // 이때 줄바꿈을 하지않고,
		System.out.println(); // 2단부터 9단까지 1만 곱한 뒤에 줄바꿈을 해준다.
	}

while문

  • 어떤 실행문을 여러 번 반복해서 실행하는 경우에 사용한다.
  • 특정 반복 횟수가 정해지지 않은 경우에 사용한다.
  • 조건식을 만족하면 계속해서 실행한다.
  • 실행문은 중괄호 { }로 묶어서 표시한다.
  • 실행문이 단일 문장인 경우 중괄호 { } 생략 가능하다.
while(조건문) {
	실행문
}
  • 조건문을 통해서 종료 시점을 판단한다.
  • 파일 읽기, 데이터베이스 데이터 읽기에서 많이 사용한다.

1부터 5까지 출력

	int a = 1;
	while(a <= 5) {
		System.out.println(a);
		a++;
	}

보이스피싱 사기로 통장 잔액에서 450씩 계속 인출된 내용을 나타내자.

	int balance = 79350;
	int money = 450;
		
	while(balance >= money) {
		System.out.println("잔액 " + balance + " 인출액 " + money);
		balance -= money;
	}
	System.out.println("잔액 " + balance);
/*
잔액 79350 인출액 450
잔액 78900 인출액 450
.
.
.
잔액 1050 인출액 450
잔액 600 인출액 450
잔액 150

while문 / do while문 차이점

  • while 수행순서
  1. 조건 (n <= 10)을 먼저 판단
  2. true인 경우 { } 수행
  3. false인 경우 { ] 빠져나옴
    조건이 거짓이면, 한 번도 수행X
	int n = 1;
	int sum = 0;
	while(n <= 10) {
		sum += n;
		n++;
	}
	System.out.println(sum);
  • do while 수행순서
  1. { } 먼저 수행
  2. 조건 (n <= 10) 판단
  3. true인 경우 { } 수행
  4. false인 경우 { ] 빠져나옴
    조건이 거짓이라도, 한 번은 수행
	int sum = 0;
	do {
		sum += n;
		n++;
	} while(n <= 10);
	System.out.println(sum);

break문

  • for문, while문, do while문, switch문을 종료시킬 때 사용한다.
    - 가장 가까운 곳에 있는 한 루프(loop)만 벗어난다.
switch(표현식) {break; 		// switch문 종료} 

----------------------------------------------------------------------

while(조건문) {break; 		// while문 종료}

----------------------------------------------------------------------

for(초기문; 조건문; 증감문) {break; 		// for문 종료}
  • 모금액 목표 : 100,000원, 한 번에 30원씩 모금한다.
    1회 모금액 30원 현재 30원
    2회 모금액 30원 현재 60원
    ...
	int total = 0;
	int money = 30;
	int serial = 0;
	int goal = 100000;
		
	while(true) {
		if(total >= goal) {
			break;
		}	
		total += money;
		serial++;
		System.out.println(serial + "회 모금액" + money + "\t현재 " + total + "원");
	}
/*
1회 모금액30	현재 30원
2회 모금액30	현재 60원
.
.
.
3333회 모금액30	현재 99990원
3334회 모금액30	현재 100020원

continue문

  • for문, while문, do while문에서 다음 문을 실행하지 않고, 반복문의 선두로 이동한다.
    - for문에서는 증감식을 실행하고, while문이나 do while문에서는 조건식을 검사
  • 반복문에서 실행을 제외하고 싶은 경우에 사용한다.
while(조건문) {continue;	 // while(조건문)으로 이동해서 조건문이 만족하는지 검사}

----------------------------------------------------------------------

for(초기문; 조건문; 증감문) {continue; // 증감문으로 이동한 뒤 조건문이 만족하는지 검사}

1 ~ 100 중에서 3의 배수를 제외하고 모두 더하기

	int n = 0;
	int total = 0;
		
	while (n < 100) {	
		n++;
		if(n % 3 == 0) {
			continue;	// 3의 배수라면 n을 더하지 않고, while문으로 돌아간다.
		}
		total += n;	
	}	
	System.out.println("합계 " + total);	 // 합계 3367

위에 문제를 continue 없이 코드 작성

    total = 0;
	n = 0;
	while(n < 100) {
		n++;
		if(n % 3 != 0) {	// 3의 배수가 아니라면 total에 n을 더해줘라.
			total += n;
		}
	}

0개의 댓글