Minwoo Dev.
[Java] for문 이중 반복문 - 별 찍기 본문
이중반복문은 코드에서 흔히 사용된다.
기본적으로 언어를 배우면서도 많이 사용하게 되는데, 그 중 for문의 이중 반복문에 대하여 설명하겠다.
내가 제일 좋아하는 for문!
- 기본적인 형태
public class test {
public static void main(String[] args) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
// ...실행 코드...
}
}
}
}
위처럼 for문 안에 다시 for문을 사용한다.
for문 안에 for문이 들어있기 때문에 들여쓰기로 for문 내부의 이중for문이라는 것을 명확하게 드러내야 한다.
그리고, 이중 for문에서는 for문의 중괄호를 꼭 사용해야 한다. (소스코드가 한줄 이상이므로.)
for문 내부의 이중for문은 보편적으로 j 변수를 사용한다.
for문은 바깥에서부터 안으로 i,j,k와 같은 변수를 사용한다.
다른 for문은 다른 변수를 사용해야 범위를 검사하는 데 있어서 오류가 발생하지 않는다. 별개의 반복문이기 때문이다.
예시를 통해 알아보자.
별 (*) 사각형 만들기
*****
*****
*****
*****
*****
package chap_04;
public class _08_NestedLoop {
public static void main(String[] args) {
for (int i = 0; i < 5; i++){
for (int j = 0; j < 5; j++){
System.out.print("*");
}
System.out.println();
}
System.out.println("----------------------");
}
}
별 (*) 하나를 5번출력하고, 줄바꿈을 수행한 후에 5번 반복하면 5 x 5 사각형이 만들어지므로 위 코드처럼 작성할 수 있다.
(여기에서 println이 아닌 print를 사용한 이유는 별을 5개 출력하기까지는 줄바꿈이 필요없기 때문)
정상적으로 출력된다.
그럼 이번에는 사각형이 아닌 삼각형을 출력해보자.
별 (*) 왼쪽 삼각형 만들기
*
**
***
****
*****
사각형이 아니라 삼각형이다.
for문 하나는 5까지의 범위를 가질테고, 이중for문인 안쪽 for문은 순서대로 1, 2, 3, 4, 5개가 출력되도록 설계해야한다.
그럼 j의 범위를 어떻게 설정해야 할까 ?
package chap_04;
public class _08_NestedLoop {
public static void main(String[] args) {
for (int i = 0; i < 5; i++){
for(int j = 0; j < i+1; j++){
System.out.print("*");
}
System.out.println();
}
System.out.println("----------------------");
}
}
그 방법은 i를 활용하는 법이다. i는 프로그램이 반복될 때마다 값이 변하고 있으므로 1,2,3,4,5의 순서로 변해야하는 j의 범위에 사용하기 딱 좋은 변수이다.
i는 처음에 0이므로, 첫번째 턴(i=0)에서 별을 하나 출력해야하는 j의 범위를 j<i+1이라고 정해둘 수 있다.
그리고 i가 다음 턴인 두번째 턴(i=1)에는 j의 범위가 j<i+1(1+1 = 2) 이므로 별이 두 번 출력될 것이다
이와 같은 방식으로 별이 삼각형 모양으로 출력되는 것이다.
다른 언어를 공부했다면 이 별 그리기 문제는 질리도록 봤을 것이다. 하지만 보지 못했다면 잘 공부해두자. 반복문의 기본 중에 기본이다.
'Java' 카테고리의 다른 글
[Java] Break문 (0) | 2023.11.13 |
---|---|
[Java] 구구단 만들기 (0) | 2023.11.13 |
[Java] Do while문 (0) | 2023.11.12 |
[Java] While문 (0) | 2023.11.11 |
[Java] For 문 (0) | 2023.11.11 |