[Java] 반복문 (for, while)
in Java
조건문과 함께 제어문에 속하는 반복문을 알아본다.
반복문은 같은 기능을 반복해서 사용해야 할 때 보다 편리하게 쓸 수 있게 해준다.
for문
기본적인 반복문인 for문이다.
조건을 만족하지 않을때 까지 문장을 반복시키기 위한 용도이다.
for문의 기본 구조
for문의 기본 형태는 for (초기값; 실행(종결)조건문; 증감치) {
//()안 문장이 참이 아닐때 까지 반복될 문장
}
for문의 사용 예제
for (int i=0; i<10; i++) { // i가 0부터 9까지 차례로 1씩 증가
System.out.println("*****"); // "*****"를 총 10번(0 ~ 9) 반복하여 출력
}
if문과 함께 사용하는것도 가능하다
//for문 : 1~10 숫자 중 짝수를 출력(2,4,6,8,10)
for (int i=1; i<=10; i=i++) {
if(i%2 == 0){} // i를 2로 나눈 나머지가 0이면,
System.out.println(i); // i값을 출력
}
}
2중 for문
for문은 for문 안에 if문, while문, for문 등
for문 안에 여러 조건문 또한 올 수 있다.
for문 안에 for문이 들어간 경우를 2중 for문이라 한다.
2중 for문 사용 예제
for (int i=0; i<5; i++){ // *
for (int j=0; j<i; j++){ // **
System.out.print("*"); // *** 이와 같은 모양 출력
} // ****
System.out.println(); // *****
}
2중 for문을 배울 때 모두 한 번쯤 출력해보는 별로 모양 만들기다.
이를 응용하여 여러 모양을 만들 수 있다.
int spaceCnt = 0;
int starCnt = 5;
for (int line=1; line<=5; line++) {
for (int space=1; space<=spaceCnt; space++) { // " " 갯수를 반복문 처리
System.out.print(" ");
}
for (int star=1; star<=starCnt; star++) { // "*" 별 갯수 처리
System.out.print("*");
} // *****
System.out.println(); // ****
spaceCnt++; // *** 이와 같은 모양 출력
starCnt--; // **
}
for문을 이용한 구구단 만들기
for문을 이용해 구구단 만드는 예제
// 구구단 말머리에 붙을 타이틀을 출력하는 for문
for(int i=2; i<=9; i++) {
System.out.print("--"+i+"단--"); // --2단--\t--3단--\t--4단-- ... --9단--
System.out.print("\t"); // 위와 같이 출력
}
System.out.println();
for (int i=1; i<=9; i++) { // i는 단 수에 곱해지는 수 (j * 1 ... j * 9)
for (int j=2; j<=9; j++) { // j는 2~9까지 (2단 ~ 9단)
if ((j*i)<10) { // 곱셈 결과가 10 미만일 때 (한 자리수 일 때)
System.out.print(j+"*"+i+"= "+(j*i)); // "=" 뒤에 " "를 추가 (자리수 정렬)
System.out.print("\t");
} else {
System.out.print(j+"*"+i+"="+(j*i)); // 곱셈 결과가 10 이상일 때
System.out.print("\t"); // 5*3=15 이와 같이 출력
}
}
System.out.println();
}
while문
반복문의 일종으로 for문보다 조금 더 간결하게 사용할 수 있다.
while문의 기본 구조
while (실행조건문) {
조건문변수 증감설정 (반복문시작 지검 - 선택)
실행할 문장;
조건문변수 증감설정 (반복문끝나는 지점 - 선택)
}
while문의 경우 기본적으로 for문과 같이 ()안에 증감치가 들어가지 않아
실행문 안에서 증감치를 설정해줘야 한다.
()안의 조건문이 true일 경우 {}안의 문장이 무한히 실행되기 떄문에
증감치나 break문 등 반복문을 빠져나갈 수단이 반드시 하나 이상 필요하다.
while문도 for문과 같이 while문 안에 여러 조건문이 들어갈 수 있다.
while문의 사용 예재
int num = 1;
while (num <=10) {
System.out.print(num + " ");
num++;
}
for문과 같은 방식으로 사용하려면 위와 같이
반복문 외부에서 변수의 초기값을 설정해주어야 한다.
while문을 이용한 무한 반복문
int num = 1;
while(true) { // ()안을 true로 설정하여 무한 반복
System.out.print(num + " ");
if (num == 5) break; // break문을 만나면 반복문을 빠져나옴
num++; // 증감치를 설정해주지 않으면 무한히 같은 문장만 실행
}
위와 같이 while문 안에 if문(조건문)이 들어갈 수 있다.
do ~ while문
do ~ while문은 실행될 문장을 do문 뒤에 작성하고
뒤에 while문에서 조건을 설정하는 형태로
do문이 최소 1회 이상 실행될 수 밖에 없다.
do ~ while문 기본 구조
do { // 초기에 실행할 문장을 작성
증감치 설정(실행명령문 전/후)
실행할 명령문;
} while (조건문); // 뒤쪽에 반복문의 조건문을 장성
do ~ while문은 위와같이 while문을 뒤로 뺌으로서
조건을 나중에 설정하는 형태이다.
do ~ while문 사용 예제
num = 1;
do {
System.out.println("do ~ while : "+ num);
num++;
} while (num<=10);
// 이와같이 기본 틀은 while문과 크게 다를바 없지만
num = 0; // 조건을 마지막에 붙여준다는 점에서 차이가 생긴다.
do {
num++;
System.out.println("do ~ while : "+ num);
} while (num<10);