이 게시물은 아래 버전을 기준으로 작성되었습니다. Java : 11.0.15.1 OS : Windows 10 Pro IDE : Eclipse IDE for Enterprise Java and Web Developers - 2022-06 |
While / Do-While 반복문
반복문
조건이 true인 동안 실행문을 반복하여 실행시키는 구문. 루프(Loop)문이라고도 함. 조건이 참에서 변하지 않게 설정해 무한루프를 실행시킬 수도 있고 조건에 변경을 주어 루프문을 빠져나오게 하는 것도 가능하다. 웹 개발에서는 무한루프를 사용하는 일이 드물며, 사용하더라도 루프문을 빠져나올 방법이 존재해야 한다.
반복문의 종류로는 while, do-while, for, for-each 반복문 등이 있다.
While 반복문
설명
조건이 true일 때 실행문을 반복하여 실행하는 구문. 조건에 따라 한 번도 실행되지 않을 수도 있다.
문법
while ([조건]) { [실행문]; } |
아래 예시 코드를 보자.
package com.devgsp.study.basic;
public class WhileLoop {
public static void main(String[] args) {
// While 반복문 예시 코드 1
int age = 1;
while (age < 33) { // age가 33일 때까지 실행됨
System.out.println("나 " + age + "살이에요 OK? " + age + "살이면 여자친구 있어야죠...");
age++; // age 변수 1씩 증가
}
System.out.println("====반복문1 끝====");
// While 반복문 예시 코드 2
// 반복문 안에서 분기문 설정
int num = 10;
while (num > 0) {
if (num % 2 == 1) { // num이 홀수이면
System.out.println(num + "은 홀수야!");
} else if (num % 2 == 0) { // num이 짝수이면
System.out.println(num + "은 짝수야!");
} else {
System.out.println("오잉???");
}
num--; // num 변수 1씩 감소
}
System.out.println("====반복문2 끝====");
}
}
추가적으로 중요한 것을 설명하자면, 분기문과 반복문을 작성하면 중괄호로 범위를 설정하게 된다. 이 중괄호 안에서도 변수를 설정할 수 있는데, 변수는 기본적으로 선언된 영역(중괄호) 안에서만 사용이 가능하다. 따라서, 특별한 경우가 아니면 반복문 내에서 변수나 객체들을 선언 및 생성하는 걸 줄이는 것이 좋다.
아래 예시 코드를 보자.
package com.devgsp.study.basic;
public class VarArea {
public static void main(String[] args) {
// 중괄호 안 변수 예시 코드1
boolean isGSPHandsome = true; // ???
if (isGSPHandsome) {
int num = 1004;
System.out.println("num : " + num);
}
System.out.println("num : " + num); // 에러!
// 중괄호 안 변수 예시 코드2
boolean isGSPSmart = false;
int studyPoint = 0;
while (!isGSPSmart) {
System.out.println("GSP 바보임!");
studyPoint++;
System.out.println("공부력 1 상승!");
System.out.println("현재 공부력 : " + studyPoint);
if (studyPoint == 10) {
isGSPSmart = true;
String msg = "이제 바보 아니다!";
}
}
System.out.println(msg); // 에러!
}
}
위 코드를 그대로 실행하면 아래와 같은 에러가 발생한다.
변수 num, msg가 분명 있는데 실행이 되지 않는다. 쉽게 말하자면 중괄호 안에서 선언하고 초기화한 변수를 중괄호 밖에서 사용하려고 하고 있기 때문이다.
즉, 중괄호 안에서 값을 저장한 후 중괄호 밖에서 해당 변수를 사용하고 싶다면, 중괄호 밖에서 먼저 변수의 선언 및 초기화를 한 뒤에 중괄호 안에서 값을 새로 저장해 주어야 한다.
위 코드의 경우 아래와 같이 고치면 된다.
package com.devgsp.study.basic;
public class VarArea {
public static void main(String[] args) {
// 중괄호 안 변수 예시 코드1
boolean isGSPHandsome = true; // ???
int num = 0;
if (isGSPHandsome) {
num = 1004;
System.out.println("num : " + num);
}
System.out.println("num : " + num);
// 중괄호 안 변수 예시 코드2
boolean isGSPSmart = false;
int studyPoint = 0;
String msg = "";
while (!isGSPSmart) {
System.out.println("GSP 바보임!");
studyPoint++;
System.out.println("공부력 1 상승!");
System.out.println("현재 공부력 : " + studyPoint);
if (studyPoint == 10) {
isGSPSmart = true;
msg = "이제 바보 아니다!";
}
}
System.out.println(msg);
}
}
Do-While 반복문
설명
do-while 반복문도 조건이 true일 때 실행문을 반복하여 실행하는 구문으로 while문과 비슷하지만, 조건을 검사하는 시점이 다르다는 점에서 차이가 있다. do-while 반복문은 조건에 상관없이 무조건 처음 한 번은 실행되고 그 후에 조건을 검사한다.
문법
do { [실행문]; } while ([조건]); |
아래 예시 코드를 보자.
package com.devgsp.study.basic;
public class DoWhileLoop {
public static void main(String[] args) {
// Do-While 반복문 예시 코드
int oneMouth = 1;
do {
System.out.println("나 한 입만...");
oneMouth += 1;
} while (oneMouth == 0);
System.out.println("아까도 한 입 먹었잖아 ㅅㅂ");
// oneMouth 변수의 초기값이 1이고 반복문이 실행되는 조건은
// oneMouth가 0일 때로 설정되어 있지만 실행문이 한 번은 실행됨.
}
}
[예제] 1. com.devgsp.study.basic 패키지에 MyWhileLoop 클래스를 생성하자. 2. int형 변수 num을 선언하고 0으로 초기화하자. 3. num을 1씩 계속 증가시키고, num이 8의 배수일 때만 출력시키는 반복문을 작성하자. 단, num은 100까지만 증가한다. |
package com.devgsp.study.basic;
public class MyWhileLoop {
public static void main(String[] args) {
// While 반복문 예시 코드 1
int num = 0;
while (num < 100) {
num++;
if (num % 8 == 0) {
System.out.println("8의 배수인 num 출력 - " + num);
}
}
}
}

'개발 지식 > Java' 카테고리의 다른 글
[Java] 중첩 반복문 (0) | 2022.07.19 |
---|---|
[Java] For 반복문 (0) | 2022.07.18 |
[Java] Switch 분기문 (0) | 2022.07.16 |
[Java] If 분기문 (0) | 2022.07.15 |
[Java] 연산자 (0) | 2022.07.14 |