티스토리 뷰

웹 프로그래밍/JAVA

For문,다중 for문 (JAVA)

박강균 IT 2021. 1. 30. 01:10

For문은 글로만 설명하기 어려워 그림으로 구조와 실행 순서를 정리했다.

 일반적으로 이런 구조와 순서로 실행된다. 

1. 초기문의 값을 조건문에 대입한다

2. 조건문이 참이면 실행문을 실행한다.

3. 그 뒤 증감문으로 돌아와 초기문의 값을 증가하거나 감소한다.

 예시를 들어 이런 구조의 for문이 있다.

for(int a=0;a<10;a++)
{
 System.out.println("1");
 }
 

1. 초기문의 값은 a=0이다. 이를 조건문에 대입해보면 0은 10보다 작으니 참이다.

2. 조건문의 값이 참이기 때문에 아래의 실행문을 실행한다.

3.다시 for문으로 돌아와 a=0의 값을 증감문 a++에 대입했기 때문에 a값은 1 증가한다. 

4.a의 값은 여전히 10보다 작으므로 a값이 10이 될 때까지 반복

a는 0,1,2,3,4,5,6,7,8,9 값에서 참이므로 총 10번의 loop를 타게 된다. 

println함수로 1이 10행으로 나열된다.  

for문의 구조를 알았으니 다중 for문을 알아볼 차례이다. 

 for문과 구조는 같으나 for문안에 for문이 있는 구조이다. 

for(int a=0;a<10;a++)
{
for(int b=0;b<10;b++)
 System.out.print("1");
 }
 }

이해를 돕기 위해 아까 사용했던 코드를 활용해 다중 for문을 만들어 보았다. 

for문 안의 구조는 아까와 같다. a값을 가지고 있는 for문은 마찬가지로 10번 루프를 한다.

b의 값을 가지고 있는 for문도 마찬가지로 10번 루프를 한다. 

그렇지만 값을 출력하면 1이 100번 나오게 된다. 

이는 위의 for문이 먼저 실행되고 a=0인 상태로 한번 루프 할 동안 b for문은 b값이 9가 될 때까지 10번 루프를 타기 때문이다.

즉 a for문 이 한번 실행되면, a for문에 포함되어있는 b for문은 10번 실행이 된 후에 for문을 빠져나가 

a 값을 증가시킨다.  그 뒤에 a값이 더 이상 증가할 수 없을 때까지 b for문을 반복시킨다.

그렇기 때문에 총 100번의 루프를 한다. 

화면에 담을 수 없지만 100개의 1이 출력된 콘솔창

한 가지 주의해야 할 점은 실행문의 위치인데 100번의 루프를 실행하는 건 b for 루프이기 때문에 

a for문 쪽으로 실행문을 옮기면 10번밖에 루프 하지 않는다.

for(int a=0;a<10;a++)
{
for(int b=0;b<10;b++)

 }
  System.out.println("1");//똑같아 보이지만 b for문안에 있던 실행문을 밖으로 끄집어 냈다.
 }

b for 문에 있던 출력 실행문을 a for 쪽으로 옮겼다.

이럴 경우 a와 b for문은 정상적으로 동작하고 있지만 , 출력되는 값은 a for문을 인식하도록 되어서 1이 10번만 나온다.

*a for문의 루프상태만 알 수 있도록 출력코드의 위치를 바꿨다.

                                     *주의사항: 조건식을 잘못 설정하면, 무한루프가 발생할 수 있다.*

for (int a=10;a>1;a++)

 

a의 초기값이 10 조건식은 a가 1보다 큰 경우 그런데 a는 증가하는 for문이다. 즉 조건식이 특정 값에서 거짓이 되는게 아닌 계속 참인 상태로 있다. 이런 경우에는  무한으로 루프가 발생한다. 조건식을 주의해서 작성할 것

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함