안녕하세요.
이번 시간에는 제어문 중 반복문인 do~while문을
알아보려 합니다.
do~while문은 while문과 비슷하지만 한 가지 다른 점이 있습니다.
바로 무조건 1회는 실행을 한다는 점에 있습니다.
그 외에는 조건을 검사하여 반복 실행하는 반복문이라는 개념에 있어
while문과 같습니다.
이렇게 반복과는 무관하게 무조건 한번은 실행해야 하는 문장이
있을 경우 do~while문을 사용합니다.
시작하기 앞서 do~while문의 구조를 한번보겠습니다.
이렇게 do~while문이 실행되고
그 중 do{} 에서 반복 실행할 문장이 1회 실행됩니다.
그 후 while() 조건에 만족했을 때 다시한번 do{} 안에
반복 실행될 문장이 반복되고 조건이 거짓이 될때까지 돌아가게 됩니다.
말로하기 보단 직접 예제를 보겠습니다.
이런 식으로 메뉴판과 같은 선택지가 있는 항목이 있을 경우
무조건 한 번은 실행되어 보여줘야 되기 때문에
do~while문을 사용하게 됩니다.
int menuNo라는 변수값을 선언하고
그 입력값을 do 문 안에서 한번 쓰게 된다면
첫 출력을 실행시켜 줬고
조건에 0이 아닐 경우 while문을 반복하겠다는 조건식을
걸어줬기 때문에 아래와 같은 결과가 나오는 것을 볼 수 있습니다.
이렇게 1 / 2 / 3을 입력했을 때는 0이 아니기 때문에
while문을 반복하고 마지막에 0을 입력했을 때는
거짓이라는 조건이 성립되어 그 즉시 while문을 빠져나오게 됩니다.
while 문도 똑같지 않겠냐는 말이 있을 수 있어 예를 들어보겠습니다
같은 조건에 do를 빼고 while문으로 작성해 보았습니다.
처음에 int menuNo를 0으로 초기화시켰죠?
결과 값을 보겠습니다.
아무것도 입력하지 않았는데도 불구하고
메뉴판이 종료되어 버린 걸 볼 수 있습니다.
이경우 처음부터 조건에 성립되지 않아 while문 자체가 실행되지 않기 때문입니다.
그렇기 때문에 꼭 보여줘야 하는 메시지가 있을 때는 do~while문을 사용한다는 점
잊지 마시고 이 do ~ while문을 사용하여 어떤 메뉴를 골랐는지
얼마나 실행시켰는지 카운트하여 찍어주는 코드를 짜보고 마무리하도록 하겠습니다.
위 코드에 대해서 위에서부터 아래로 설명하도록 하겠습니다.
처음으로 메뉴번호를 입력하기 위해 menuNo라는 변수명을 만들고 0으로 초기화시켜주고
몇 번 실행했는지 알아보기 위해 count라는 변수면을 만들어 0으로 초기화시켜주고
해당 메뉴명을 담기 위한 String 변수를 만들어 빈값으로 초기화를 시켜주었습니다.
그 후 do ~ while문으로 최초 1번 메뉴판을 등장시켜주었으며
sc.nextInt(); 로 메뉴번호를 입력받습니다
그 후 0번이면 아래 출력을 모두 무시할 수 있게 메뉴번호가 0일 경우 바로 와일문을 빠져나갈 수 있게
break를 걸어주었으며 0이 아닐 경우에는
switch문으로 해당 메뉴명을 스트링 변수명에 입력시켜 주고
if문으로 1 ~ 3 이외의 숫자가 아닌지 유효성을 검사하여 아래
출력문을 실행함과 과 동시에 카운트 수를 하나 증가하며
0을 제외한 3 초과의 숫자가 입력되었을 경우에는
"메뉴판에 없습니다"라는 문자를 출력하여
첫 와일문이 동작하였고
그 후 2번 3번을 입력하고 마지막 0을 입력했을 때
반복문이 멈추면서 총 카운트수와 "메뉴판을 종료합니다"라는 문자를 출력하게 됩니다.
결과를 보게 되면
이런 식으로 처음에 계획했던 프로그램이 정상적으로 구동되는 것을
확인할 수 있습니다.
이렇게 do~while문을 알아보았는데요.
더 궁금하신 게 있으시면 댓글로 남겨주세요!
다음 포스팅은 반복문인 for문에 대해 알아보도록 하겠습니다.
감사합니다.

'개발언어 > JAVA' 카테고리의 다른 글
Java 개발을 위한 제어문 (반복문_foreach) (0) | 2023.08.06 |
---|---|
Java 개발을 위한 제어문 (반복문_for) (0) | 2023.08.06 |
Java 개발을 위한 제어문 (반복문_while) (0) | 2023.08.06 |
Java 개발을 위한 제어문 (조건문_Switch ~ case) (0) | 2023.08.06 |
Java 개발을 위한 제어문 (조건문_if_else if_else) (0) | 2023.08.06 |