◆ 반복문
- 특정 부분의 문장을 반복해서 수행하게 하는 것.
- 반복되는 횟수는 특정 값의 범위로 정해지기도 하고, 참이나 거짓에 의해서도 정해진다.
- 주어진 조건에 맞는 동안 지정된 수행문이 반복적으로 수행하는 제어문이다.
- 조건이 맞지 않으면 반복하던 수행을 멈춘다.
- 배열과 함께 많이 사용된다.
- for문의 문장들을 생략 가능하다.
- 초기화식 생략: 이미 이전에 값이 초기화되어 for 내부에서 값을 지정할 필요가 없는 경우
-
int i=0; for( ;i<5;i++){ System.out.println(i); }
-
- 조건식 생략: 반복수행에 대한 조건이 수행문 내부에 있는 경우
-
for(int i=0; ;i++){ sum+=i; if(sum>200) break; }
-
- 증감식 생략: 증감식에 대한 연산이 복잡하거나 다른 변수의 연산 결과값에 결정되는 경우
-
for(i=0;i<5; ){ ... i=(++i)%10; }
-
- 무한반복
-
for( ; ; ){ ... }
- 수행을 멈추려면 문장 안에 break나 return문을 넣어 강제로 종료시킨다.
-
int i=1; for( ; ; ){ System.out.print(" "+i); if(++i>10) break; }
-
- 초기화식 생략: 이미 이전에 값이 초기화되어 for 내부에서 값을 지정할 필요가 없는 경우
1. for문 : 지정된 횟수만큼 반복
for(초기화식; 조건식; 증감식){ //초기화식은 제어 변수를 초기화하는데 단 한 번 사용된다.
문장1;(수행문) //조건식에서 결과값이 참인지 거짓인지 검사하며
} //참이면 문장1을 수행하고 거짓이면 for문을 빠져나온다.
//증감식에서 문장1을 수행한후 제어변수를 증감한다.
//증감한 후의 변수의 값을 적용하여도 조건식을 만족하는지
//검사하여 참이면 또다시 문장1을 수행한다.
① 먼저 초기화식에서 제어 변수를 초기화하고
② 조건식이 참이면 ③ 문장1을 수행하고
④ 번의 증감식으로 이동한다.
④ 증감식에 따라 제어 변수를 증가시키거나 감소시킨 후,
② 번 조건식으로 이동한다.
④ 증감식에 의해 변경된 값이 적용된
② 조건식이 참인지 검사한다.
③ 조건식이 참이면 문장1을 수행하고
④ 증감식에 따라 제어 변수를 증가시키거나 감소시킨다. 조건식 결과가 참이라면
②→③→④ 순으로 계속 반복해서 수행하다가
② 제어 변수의 값을 적용한 조건식이 거짓이면 for문을 빠져나와
⑥ 다음 문장이 수행된다.
public static void main(String[] args) {
//1부터 10사이의 자연수 출력
for(int i=1;i<=10;i++) {
System.out.print(" "+i);
}
System.out.println("\n-------------------------");
//1부터 10사이의 홀수 출력
for(int i=1;i<=10;i+=2) {
System.out.print(" "+i);
}
System.out.println("\n-------------------------");
//1부터 10사이의 짝수 출력
for(int i=2;i<=10;i+=2) {
System.out.print(" "+i);
}
System.out.println("\n-------------------------");
//10부터 1까지 1씩 감소하면서 자연수 출력
for(int i=10;i>=1;i--) {
System.out.print(" "+i);
}
System.out.println("\n-------------------------");
//1부터 5사이의 자연수의 합
int total=0;
for(int i=1;i<=5;i++) {
total+=i;
}
System.out.println("1부터 5까지 합: "+total);
}
1 3 5 7 9
-------------------------
2 4 6 8 10
-------------------------
10 9 8 7 6 5 4 3 2 1
-------------------------
1부터 5까지 합: 15
2. while문 : 조건을 먼저 검사
- 조건이 참인 동안 수행
- 조건이 맞지 않으면 수행되는 부분이 없음
- 조건식의 결과나 변수가 true, false값인 경우 주로 사용
while(조건식){ //조건이 참이면 문장1을 반복수행.
문장1; //거짓이면 while문을 빠져나와 문장2를 수행한다.
}
문장2;
public static void main(String[] args) {
int total=0;
int i=1;
while(i<=10) {
total+=i;
i++;
}
System.out.println("1부터 10까지 합은 "+total);
System.out.println("-------------------------");
int j=1;
while(j++<5) {
System.out.print(" "+j);
}
System.out.println("\n-------------------------");
j=1;
while(++j<5) {
System.out.print(" "+j);
}
System.out.println("\n-------------------------");
j=0;
while(j++<5) {
System.out.print(" "+j);
}
System.out.println("\n-------------------------");
}
1부터 10까지 합은 55
-------------------------
2 3 4 5
-------------------------
2 3 4
-------------------------
1 2 3 4 5
-------------------------
- while문의 무한루프
while(true){ //참이면 반복을 계속하고 거짓이면 반복문을 벗어난다.
문장;
}
while(true){ //반복 문안에 if조건문을 기술하여 해당 조건을 만족하면
문장; //반복문을 벗어나게 한다.
if 조건
break;
}
3. do-while문 : 조건을 나중에 검색
- 조건이 참인 동안 반복수행.
- 반복되는 문장을 일단 한번 실행하고 조건을 검사해 조건이 참이면 계속 반복.
- 조건식의 결과나 변수가 true, false값인 경우 주로 사용.
- while문은 거짓이면 한 번도 실행되지 않지만 do~while은 조건 검사를 나중에 하므로 조건이 거짓이라도 한 번은 실행.
do{ //반복되는 문장을 한번 실행
문장; //조건을 검사해 참이면 계속 반복.
}while(조건식); //거짓이면 while문을 빠져나온다.
int total=0;
int i=1;
do {
total+=i;
i++;
}while(i<=10);
System.out.println("1부터 10까지 합은 "+total);
4. for문과 if문 혼합하여 사용하기
int tot=0;
for(int i=1;i<=100;i++) {
tot+=i;
if(i%10==0) {
System.out.println("1부터 "+i+"까지의 자연수 합계는 "+tot);
}
}
1부터 10까지의 자연수 합계는 55
1부터 20까지의 자연수 합계는 210
1부터 30까지의 자연수 합계는 465
1부터 40까지의 자연수 합계는 820
1부터 50까지의 자연수 합계는 1275
1부터 60까지의 자연수 합계는 1830
1부터 70까지의 자연수 합계는 2485
1부터 80까지의 자연수 합계는 3240
1부터 90까지의 자연수 합계는 4095
1부터 100까지의 자연수 합계는 5050
5. 다중 for문(중첩 반복문)
- for문안에 또 다른 for문을 포함시켜 사용하는 것.
- 반복문 자체를 또 반복시키는 것.
- 여러 겹 반복문을 겹쳐서 구현하면 수행 시간에 문제가 발생할 수 있다.
- 외부 반복문과 내부 반복문 간의 변수 값 변화에 유의하며 구현하여야 한다.
- 각각의 for문에 사용되는 변수가 달라야 한다.
for(초기화식; 조건식; 증감식){
문장1;
for(초기화식; 조건식; 증감식){
문장2;
}
문장3;
}
public static void main(String[] args) {
for(int dan=2; dan<=9; dan++) {
System.out.println("***"+dan+"단***");
for(int su=1; su<=9; su++) {
System.out.println(dan+" * "+su+" = "+dan*su);
}
}
}
***2단***
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
***3단***
3 * 1 = 3
public static void main(String[] args) {
int dan=2;
while(dan<=9) {
int su=1; //초기화를 해줘야함
System.out.println("***"+dan+"단***");
while(su<=9) {
System.out.println(dan+" * "+su+" = "+dan*su);
su++;
}
dan++;
}
}
***2단***
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
***3단***
3 * 1 = 3
6. break문
- 감싸고 있는 제어문 블록을 빠져나오는 기능
- 반복문에서는 조건문(if)과 같이 사용하여 조건에 해당되는 경우 반복 수행을 멈추고 반복문 외부로 이동.
- 여러반복문이 중첩되어 있는 경우엔 break문이 포함되어 있는 반복문만 빠져나온다.
- 여러 반복문에서 바깥쪽 반복문 밖으로 빠져나오기 위해서 레이블을 사용.
- break 다음에 레이블명을 기술하여 완전히 반복문에 벗어날 수 있다.
int i;
//1부터 10까지 자연수 출력
for(i=1;i<=10;i++) {
System.out.print(" "+i);
}System.out.println("\n---------------------");
for(i=1;i<=10;i++) {
if(i%3==0) {
break;
}
System.out.print(" "+i);
}
1 2 3 4 5 6 7 8 9 10
---------------------
1 2
System.out.println("break 레이블 지정하기");
exit_for:
for(int cnt=1; cnt<=5;cnt++) {
for(int i=1;i<=10;i++) {
if(i%3==0) {
break exit_for;
}System.out.print(" "+i);
}
}
break 레이블 지정하기
1 2
7. continue 문
- 반복문 내부에서 조건문(if)와 같이 사용하며 조건이 맞는 경우(true) 반복문 블록 내부의 다른 수행문들을 수행하지 않고 다시 반복문 처음으로 제어가 이동된다.
- 즉, continue문은 반복문을 계속 수행하되 continue문 이후에 기술한 문장들을 무시된다.
while(조건문){ ①
문장1; //②continue를 만나면 ①반복문의 처음으로 되돌린다.
if(조건식)
continue; ②
문장2;
}
다음 문장
int i;
//1부터 10까지 자연수 출력
for(i=1;i<=10;i++) {
System.out.print(" "+i);
}System.out.println("\n---------------------");
for(i=1;i<=10;i++) {
if(i%3==0) {
continue;
}
System.out.print(" "+i);
}
1 2 3 4 5 6 7 8 9 10
---------------------
1 2 4 5 7 8 10
'프로그래밍 > Java' 카테고리의 다른 글
Java 메서드(method) (0) | 2021.09.06 |
---|---|
Java 배열(Array) (0) | 2021.09.06 |
Java 제어문(조건문 if, switch case) (0) | 2021.08.14 |
JAVA(자바) 연산자(operator) (0) | 2021.08.13 |
Java 자료형과 변수, 형 변환 (0) | 2021.08.11 |
댓글