[Java] while문 / do~while문 / break / continue
2021. 1. 19. 17:36ㆍDev.Program/Java & Spring
728x90
======== Ex.java 만들기
p.131
2. while문
- for문과 마찬가지로 특정 문장(또는 블록)을 반복 실행하는 반복문
- for문과 달리 조건식의 위치만 정해져 있고, 초기식과 증감식 위치는 개발자가 알아서 배치하는 형태로 문장 구조가 다름
- for문은 주로 반복 횟수가 정해져 있는 경우에 사용하며, while문은 주로 반복 횟수가 정해져 있지 않은 경우에 사용
- for문과 while문은 상호 전환이 자유롭다.
< 기본 문법 >
for(초기식; 조건식; 증감식) {
// 조건식 결과가 true 일 때 반복 실행할 문장들...
}
> for 문
초기식; // 조건식보다 위(앞)에 위치해야함
while(조건식) {
증감식; // 실행 문장보다 먼저 오거나
// 조건식 결과가 true 일 때 반복 실행할 문장들...
증감식; // 실행 문장 뒤에 올 수 있다(for문과 동일하게 실행되는 위치)
}
> while 문
문제 ) "Hello, World!" 문자열 10번 반복 출력하기
int i = 1;
for(i = 1; i <= 10; i++) {
System.out.println(i + ". Hello, World!");
}
System.out.println("반복문 종료 후 i값 : " + i);
int i = 1; // 초기식
while(i <= 10) { // 조건식
// 조건식 판별 결과가 true일 때 반복 실행할 문장들...
System.out.println(i + ". Hello, World!");
i++; // 증감식(출력문 실행 후 증가해야하므로 출력문보다 아래쪽에 위치
}
System.out.println("반복문 종료 후 i값 : " + i);
i = 0; // 초기식
while(i < 10) { // 조건식
// 조건식 판별 결과가 true일 때 반복 실행할 문장들...
i++; // 증감식
System.out.println(i + ". Hello, World!");
}
System.out.println("반복문 종료 후 i값 : " + i);
> while 문을 이렇게 적을 수도 있는데 위와 다른 점은 반복문 종료 후 i 값이 다름
- 만약, 증감식 위치가 달라질 경우 초기식과 조건식도 달라질 수 있다!
- ex) 증감식이 출력문보다 먼저 실행되면 1 증가 후 출력되므로 0 부터 시작해야함.
- 조건식이 i <= 10 일 경우 10 일 때 출력 후 11 까지 실행되므로 조건식을 i <= 9 또는 i < 10 으로 변경해야한다!
======== Test.java 만들기
문제 ) while 문을 사용하여 구구단의 특정 단을 출력
문제 ) while 문과 if문을 조합하여 1 ~ 10 까지 짝수의 합, 홀수의 합을 계산하여 출력
======== Ex2.java 만들기
p.132
< 중첩 while문 >
- while 문 내에 또 다른 while 문을 기술하는 것
< 기본 문법 >
초기식1;
while(조건식1) { // 바깥쪽 while 문
초기식2; // 바깥쪽 while 문 1번 반복할 때, 안쪽 while 문 초기식 초기화
while(조건식2) {
// 조건식2 의 판별 결과가 true 일 때 실행할 문장들...
증감식2;
}
// 안쪽 while 문 반복이 끝난 후 바깥쪽 while 문 제어변수를 증감시킴 증감식1;
}
문제 ) i가 1 ~ 3까지 반복할 동안 i 반복 1회 당 j가 1 ~ 5까지 반복
int i = 1;
while(i <= 3) {
System.out.println("i = " + i);
int j = 1;
while(j <= 5) {
System.out.println("----- j = " + j);
j++;
}
i++;
}
> 잘 모를 때는 i랑 j while문을 따로 적고 잘라내서 안으로 넣어주기
======== Test2.java
문제 ) 중첩 while 문을 사용한 구구단 출력(2단 ~ 9단)
int dan = 2;
while(dan <= 9) {
System.out.println(" < " + dan + "단 >");
int i = 1;
while(i <= 9) {
System.out.printf("%d * %d = %d", dan, i, (dan * i));
System.out.println();
// System.out.println(dan + " * " + i + " = " + (dan * i));
i++;
}
dan++;
System.out.println(); // 줄바꿈
}
- printf() 나 println() 중에 선택해서 쓰면 됨.
======== Ex3.java 만들기
p.133
< do ~ while 문 >
- while 문과 달리 일단 문장을 한 번 실행한 후 반복문의 마지막에서 조건식을 판별하는 while 문
- while 문은 조건식 판별 결과에 따라 문장이 단 한 번도 실행되지 않을 수 있지만, do ~ while 문은 조건식 판별 여부와 관계없이 문장이 무조건 한 번은 실행됨
< 기본 문법 >
초기식;
do {
// 반복 실행할 문장들...
증감식;
} while(조건식); // 주의!! 마지막에 세미콜론(;) 필수!
======== Ex4.java 만들기
p.134
< break 문 vs continue 문 >
- 반복문을 종료하거나 문장 실행을 생략하는데 사용되는 제어문
1. break 문
- 현재 실행 중인 반복문을 종료하고 중괄호{} 를 빠져나가는 문
- 주로 반복문 내에서 if문을 통해 조건 판별 후 반복을 종료할 때 조합하여 사용
2. continue 문
- 현재 실행 중인 반복문 내에서 continue 문 아래쪽에 위치하는 모든 문장의 실행을 생략하고 다음 반복을 진행하는 제어문
- 주로 반복문 내에서 특정 문장 실행을 생략할 때 사용
문제 1 ) 1 ~ 100 까지의 합계를 구하라 (for문으로)
문제 2 ) 합계(sum) 가 100을 초과할 때 i 값을 출력
// 1 ~ 100 까지의 합계를 누적
// 단, 합계(sum) 가 100을 초과할 때 누적을 중단한 후, i 값을 출력
int i = 1;
int sum = 0;
for(i = 1; i <= 100; i++) {
System.out.print(i + " ");
sum += i;
if(sum > 100) { // 합계(sum)가 100을 초과할 경우
break; // for문을 종료하고 for문 아래쪽 실행문으로 빠져나감
}
}
// break 문을 만나면 실행할 문장 위치
System.out.println();
System.out.println("합계 : " + sum);
System.out.println("1 ~ 100 까지 합계 누적 중 100을 초과할 때 i값 : " + i);
- break → for 문을 종료하고 빠져나옴
sum = 0;
for(i = 1; i <= 10; i++) {
if(i == 5) {
// break; // i가 5이면 현재 반복문 종료(1 ~ 4 까지의 합 계산)
continue; // i가 5이면 아래쪽 반복 문장 생략 후 증감식으로 이동
// (1 + 2 + 3 + 4 + 6 + 7 + 8 + 9 + 10 합 계산 = 5 제외)
}
sum += i;
}
System.out.println("합계 : " + sum);
- continue → 5를 제외하고 마저 실행! 멈추는게 아님!
728x90
'Dev.Program > Java & Spring' 카테고리의 다른 글
[Java] 2차원배열 (0) | 2021.01.19 |
---|---|
[Java] 배열 (0) | 2021.01.19 |
[Java] switch~case문 / 반복문 / for문 (0) | 2021.01.14 |
[Java] 조건문 / if문 / if~else문 / 중첩if문 (0) | 2021.01.14 |
[Java] 삼항연산자 / 논리연산자 / 쉬프트연산자 (0) | 2021.01.14 |