반복문 - for문, 다중 for문
* for 반복문
- 변수의 값을 이용하여 반복 실행하는 명령문.
- 일정 횟수에 대한 반복을 구현할 때 효율적으로 사용되는 반복문.
즉, 반복문의 횟수를 알고 있는 경우에 사용됨.
- 형식) for(초기식; 조건식; 증감식) {
반복 실행문;
}
* 다중 for문
- 반복문 안에 또다른 반복문을 포함하는 문장.
- 반복문이 중첩되어 사용되는 경우.
- 외부 반복문과 내부 반복문 간의 변수 값 변화에 유의해야 함.
- 형식) for(초기식1;조건식1;증감식1) {
반복실행문1;
for(초기식2; 조건식2;증감식2;) {
반복실행문2;
}
}
[for 반복문 실행 순서]
1. 초기식 : 처음에 한 번만 실행됨(변수 선언)
2. 조건식 : 조건이 참이면 반복, 거짓이면 탈출(exit)
3. 실행문 : 반복 대상인 반복 실행문이 실행됨.
4. 증감식 : 변수를 대상으로 증가(++) 또는 감소(--)
기본예제) for문을 이용하여 1 ~ 10 까지를 화면에 출력해 보자.
public static void main(String[] args) {
// for문을 이용하여 1 ~ 10 까지를 화면에 출력해 보자.
for(int su=1; su<=10; su++) {
System.out.println("su >>> " + su);
}
}
예제1) for문을 이용하여 1~100까지의 홀수이 합과 짝수의 합을 구하자.
public static void main(String[] args) {
int odd = 0, even = 0;
for(int i=0; i<=100; i++) {
if(i%2==1) {
odd += i;
} else {
even += i;
}
}
System.out.println("1부터 100까지");
System.out.println("홀수의 합 >>> " + odd);
System.out.println("짝수의 합 >>> " + even);
}
예제2) 신장별 표준 체중 대응표를 만들어 보자. 표시할 신장의 범위(시작값/종료값/증가값)은 정수로 키보드 입력을 받자. (표준 체중 구하는 공식 : (신장 - 100) * 0.9)
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("몇 cm부터 표시할까요? : ");
int start = sc.nextInt();
System.out.print("몇 cm까지 표시할까요? : ");
int end = sc.nextInt();
System.out.print("몇 cm 단위로 표시할까요? : ");
int step = sc.nextInt();
System.out.println("신장\t표준체중");
System.out.println("===============");
for(int i=start; i<=end; i=i+step ) {
System.out.println(i+"cm\t"+((i-100)*0.9)+"kg");
}
sc.close();
}
예제3) 다중 for문을 이용하여 구구단을 화면에 출력해 보자.(세로)
public static void main(String[] args) {
// 구구단 세로 출력
for(int i=2; i<=9; i++) { // 구구단에서의 단
System.out.println("*** "+i+"단 ***");
for(int j=1; j<=9; j++) { // 구구단에서의 수
System.out.println(i+" * "+j+" = "+(i*j));
}
System.out.println();
}
System.out.println();
}
예제4) 다중 for문을 이용하여 구구단을 화면에 출력해 보자.(가로)
public static void main(String[] args) {
// 구구단 가로 출력
for(int k=2; k<=9; k++) {
System.out.print("*** "+k+"단 ***\t");
}
System.out.println();
for(int i=1; i<=9; i++) {
for(int j=2; j<=9; j++) {
// System.out.print(j+" * "+i+" = "+(j*i)+"\t");
System.out.printf("%d * %d = %2d\t", j, i, j*i);
}
System.out.println();
}
}
예제5) 아래와 같이 별을 찍어보자.
*****
*****
*****
*****
*
**
***
****
*****
*****
****
***
**
*
public static void main(String[] args) {
for(int i=1; i<=4; i++) {
for(int j=1; j<=5; j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println();
for(int i=1; i<=5; i++) {
for(int j=1; j<=i; j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println();
for(int i=5; i>=1; i--) {
for(int j=1; j<=i; j++) {
System.out.print("*");
}
System.out.println();
}
}