[JAVA/자바] while문, do~while문
while문

위에 설명한 것처럼 조건식이 true이면 문장이 실행되고, false이면 종료된다. for문과는 다르게 초기값과 증감식을 적는 곳이 명시되어 있지 않다. 다르게 말하면 while문의 문장을 반복할 때 초기값과 증감식을 정의하는 것이 필수 조건은 아니라는 것이다. 이것에 대해서는 조금 후에 알아보기로 하자. 우선 for문에서 익숙해졌던 초기값과 증감식을 작성하는 방법을 알아보자. while문 밖에서 변수를 선언하고 초기값을 할당한 후 while문 내에서 증감식을 작성하면 된다. 예제를 통해서 알아보자.
위의 설명처럼 초기값, 조건식 및 증감식을 정의하였고 결과는 10번 동안 문장이 반복되어 출력된다.
이번에는 for문에서 작성했었던 1~100까지 합계를 구하는 예제와 짝수 및 홀수의 합을 구하는 예제를 while문으로 구현해 보자.
합계에 영향을 주지 않도록 변수(sum, odd, even)에 초기값을 0으로 할당하고, 반복문의 초기값을 할당하였다. 총합 계산을 위한 알고리즘을 작성하고 while문 내부에 if문을 정의하여 짝수와 홀수의 조건을 작성한다. 그리고 짝수합과 홀수합의 알고리즘을 작성한 후 반복문의 증감식을 작성하였다. 결과는 아래와 같다.

이번에는 위에서 설명했던 초기값과 증감식이 while문의 필수 조건이 아니라고 했던 내용을 예제를 통해 알아보자. (Scanner라는 클래스를 이용하여 콘솔 창에 값을 입력받는 내용인데 이것이 왜 이렇게 동작하는지는 아직 모르는 게 좋고 이런 게 있구나 하고 넘어가면 된다. Scanner에 대해서는 나중에 다시 다룰 예정이다. 단, 작성하는 방법에 대해서는 알아두면 앞으로 클래스, 생성자, 메소드, 객체에 대해서 공부할 때 많은 도움이 될 것이다.)
위에서 설명하였듯이 콘솔창으로 값을 입력받을 때 저런 방법을 사용하는구나 하고 넘어가면 된다. 위 예제는 콘솔창에 2개의 값을 입력받아 나머지를 구하는 코드이다. 코드가 실행된 후 계속 진행할 것인지 종료할 것인지를 콘솔창에 입력하고 보조제어문을 이용하여 while문을 반복할지 종료할지를 결정한다. (보조제어문 별도 포스팅 예정) 여기서 주목할 내용은 초기값과 증감식을 작성하지 않아도 while문을 반복하고 종료할 수 있다는 것이다. 결과는 아래와 같다.


do ~ while문은 for문이나 while문과는 다르게 한가지 다른 점이 있다. 조건식이 true이든 false이든 상관없이 중괄호({ }) 안의 문장을 무조건 한번 실행시킨 후 조건을 검사하여 반복을 결정한다.(조건식이 문장의 다음에 나오기 때문이라고 이해하자.) 다른 내용들은 while문과 동일하게 동작한다. 예제를 통해서 알아보자.
먼저 초기값을 설정하고 do ~ while을 정의한 후 실행문과, 증감식, 조건식을 써주었다. 결과는 실행할 문장이 10번동안 반복되어 출력된다.
위에서 조건식에 관계없이 무조건 한번 실행시킨다고 하였는데 그게 어떤 의미인지 예제를 통해서 알아보자.
위 예제는 초기값이 조건식을 만족시키지 못한다. 즉 false이다. 하지만 무조건 한번 문장을 실행시킨 후 조건을 검사하기 때문에 아래와 같이 결과가 출력 된다.

for문에서 작성했었던 구구단을 출력하는 예제를 do ~ while문을 이용해서 코딩해 보자.
여기에서 주의할 점은 int j의 초기값을 설정하는 위치이다. 처음 시작하는 do~while문 밖에다 j의 값을 설정하면 한번 반복된 후 값이 초기화가 되지 못하기 때문이다. 결과는 아래와 같다.
