반복문 안에 또 다른 반복문을 포함하는 형태를 말함
반복문이 중첩이 되어 사용되는 경우를 말함
외부 반복문과 내부 반복문 간의 변수의 값 변화에 유의할 것!
형식)
for (초기식1; 조건식1; 증감식1){
반복 실행 문장;
for(초기식2; 조건식2; 증감식2){
반복 실행 문장;
}
}
============================코드============================
for(int i = 1; i <= 3; i++) { // j가 거짓일 시 i 증가식으로 가게 됨 --> 그리고 다시 j가 있는 for 문으로 감
for(int j = 1; j <= 4; j++) { // 참 일시 j 값이 증가가 됨
System.out.print("[" + i + "," + j + "]");
}
System.out.println();

[문제]
다중 for문을 이용하여 구구단을 만들어보자
2가지 형식으로 만들자 (세로형 / 가로형)
for(int dan = 2; dan <= 9; dan++) { // 고정되는 것은 바깥 for문에, 변화하는 것은 안쪽 for문에 / 구구단에서의 단
System.out.println("*** " + dan + "단 ***");
for(int su = 1; su <= 9; su++) { // 구구단에서의 수
System.out.println(dan + "*" + su + "=" + (dan * su));
} // 안쪽 for문의 end
System.out.println();
} // 바깥쪽 for문의 end

<가로형>
============================코드============================
for(int su1 = 1; su1 <=9; su1++) {
for(int dan1 = 2; dan1 <=9; dan1++) {
System.out.print(dan1 + "*" + su1 + "=" + (dan1*su1) + "\t");
}
System.out.println();
}

[문제 : 별찍기 1]
아래와 같이 화면에 출력 해보자******* ******* ******* *******
============================코드============================
for(int i = 1; i <= 4; i++) { // 별찍기에서의 행
for(int j = 1; j < 8; j++) { // 별찍기에서의 열
System.out.print("*");
}
System.out.println(); // 다음줄로 이동
}

[문제 : 별찍기 2]
아래와 같이 화면에 출력 해보자* ** *** **** *****
============================코드============================
for(int i = 1; i <= 5; i++) {
for(int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}

[문제 : 별찍기 3]
아래와 같이 화면에 출력 해보자***** **** *** ** *
============================코드============================
for(int i = 5; i >= 1; i--) {
for(int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}

-구구단에서의 가로형으로 화면에 출력하는 것이 헷갈리고 어려웠음.. 행이 기준이 될 때와 열이 기준이 될 떄를 잘 파악하고 적절한 식을 쓰는 것이 필요함!
손에 익을 때까지 문제를 풀어보고 내 마음대로 변형해볼 수 있도록 노력해야 할 거 같다 흑흑
-대망의 별 찍기.. 안쪽 for문의 값 기준을 왜 i로 정하는지 이해가 가지 않아 어려웠다.. 안쪽 for문이 false일 때까지 계속 반복하다 바깥 for문의 값을 하나 증가한다는 걸 잊지 말자!
어떻게 차근차근 하나씩 해체해서 생각하다 보면 어느정도 알 것 같긴 하나 이것 또한 반복해서 풀어보는 게 필요할 듯 하다