자바 JAVA - 반복문 (while 문), 구구단
이번엔 while 문에 대해 알아보자.
여러 프로그래밍언어를 배워봤지만 while 문은 진짜 무슨 언어든 많이 쓰이는 것 같다.
어렵지 않으니 한번 배워보자.
while 문은 조건에서 벗어날때까지 계속적으로 while문 내의 코드를 실행시키는 역할을 한다.
예를 들어 구구단을 출력할때 곱하는 숫자가 하나씩 커지는데, 한 식을 수행하고 숫자를 증가시킨 뒤
다시 똑같은 과정을 반복하는 그런 단순 반복문에 자주 쓰인다.
그럼 while 문을 통해 구구단을 한번 작성해보자.
우선 1단만 살펴보면.
변수 i 와 j 를 1로 선언해준다.
왜 1로 선언하냐고? 1*1 을 제일 먼저 출력할 것이기 때문에.
우선 1*1 을 출력해주면 1 * 1 = 1 이라는 값이 잘나온다.
그 다음 우리가 원하는 값은 1 * 2 인데, 여기서 변한 수는 뒤에서 곱해주는 수 이기 때문에
그 수에 해당하는 변수 하나만 그 값을 증가 받으면 된다.
이 코드에선 앞에 값이 i 이기때문에 뒤에 값 j 에다가 1을 증가시켜주면 될 것이다.
이 과정을 반복하면, 뒤에 값 j 만 1씩 증가를 해주게 된다.
1을 증가 시키고 곱하고 출력하고 ~ 1을 증가시키고 곱하고 출력하고 ~ 이 과정을 반복하면된다.
언제까지? j가 9를 넘어가기 전까지!
그러면 j가 9가넘어가면 그 과정을 멈추면 되겠지? 이 조건을 while ( 조건 ) 이 안에 써주면된다.
j <= 9 이게 뜻하는건 j가 9 이하일때까지만 출력을 하고
9를 넘어가면 그 코드를 종료 시키겠다고 선언을 하는 것이다.
j 가 10이된순간 while 조건을 벗어나기에 코드 출력을 중단한다.
이대로 출력을 해보면 이렇게 잘 나온다.
자, 그러면 9단 까지 출력을 하려면 어떻게 하면될까?
이제는 앞에 숫자까지바꿔줘야할텐데, 그러면 변수 i 를 조정해줘야한다.
그리고 변수 j 는 다시 1로 초기화시켜줘야하고. 이 코드를 작성하려면 번거로울것 같지만,
while 내에 while 문을 또 작성해주면 쉽게 할 수 있다.
이런 식으로.
자 코드를 살펴보자.
while 문 내에서
이 코드가 종료될 시점에는
i = 1
j = 9
로 초기화 되어있는 상태이다.
우리가 다음으로 원하는식은 2 * 1 = 2 라는 식이기 때문에
i = 2
j = 1
로 초기화를 시켜줘야한다.
그러기 위해선 while문 밖에서 i 를 1 증가시켜줘야하고, j 를 1로 다시초기화시켜주면 된다.
(이 두 순서를 바꿔 작성하여도 출력하는데는 지장이 없다.)
이 코드가 바로 while문 밖
이 코드 이다.
이 코드를 끝낼 시점에선
i = 2
j = 1
로 초기화 된 시점이다.
밖의 while 문 조건은 i <= 9일때이므로
다시 위로 올라가 while문 내에 있는 while문을 다시 실행한다.
그러면 이와 같이 구구단 2단을 출력하게 되는 것이다.
이후 j = 9 를 넘어가게되어 다시 while문을 종료하고 앞에 실행했던것처럼
다시 i 는 1증가 j 는 다시 1로 초기화 시켜, 3단으로 넘어가는 것이다.
이 과정을 반복하면 i가 9를넘어가는 시점이 오는데 그게 바로 구구단의 9단이 다 출력된 시점이다.
(여기까지 출력이 끝나면 i는 이제 10이 된다.)
i 가 9 를 넘어가면 밖의 while문의 조건도 이제 벗어나기때문에 while문을 완전히 벗어나게 되며,
이렇게 해서 구구단을 9단까지 출력을 할 수 있게되는 것이다.
이런식으로 잘 출력된다.
Tip!
코드를 좀더 가독성 좋게 깔끔하게 출력하려면,
이런 식으로 while문을 시작하고, 끝내는 시점에 맞춰서 추가 코드를 출력해주고 여백을 조금씩 주면,
아래와 같이 출력 값을 조금 더 깔끔하게 확인할 수 있다.
'프로그래밍언어 > JAVA' 카테고리의 다른 글
자바 JAVA - 배열 (0) | 2021.08.23 |
---|---|
자바 JAVA - 반복문 (for 문), 구구단 (0) | 2021.08.21 |
자바 JAVA - 반복문 (switch 문) (0) | 2021.08.20 |
자바 JAVA - 반복문(if, else, else if 문) (0) | 2021.08.19 |
자바 JAVA - 연산자 실습 (0) | 2021.08.19 |