: if 문과 비슷하지만, while문은 조건식이 참인 동안. 즉 조건식이 거짓이 될때까지 블럭내의 문장을 반복한다.
while(조건식) { // 조건식의 연산결과가 참(true)인 동안, 반복될 문장들을 적는다
조건식이 참 이면 블럭안으로 들어가고 거짓이면 while문을 벗어난다.
블럭{}의 문장을 수행하고 다시 조건식으로 돌아간다. (조건식이 참이므로)
<<예제 : 1부터 몇까지 더해야 100을 넘지 않는지 알아내는 문제>>
int sum = 0;
int i = 0;
//i를 1씩 증가시켜서 sum에 계속 더해나감
while(sum <= 100 ) {
System.out.printf("%d - %d%n", i, sum );
sum += ++i;
}
}
while문 에서 증감식을 처리하지 않으면 무한루프 되는 현상이 발생
for문으로 바꿀 수 있다.
기본 자료형은 반드시 초기값이 할당되어있어야한다.
: 실행문을 조건과 상관없이 반드시 1번은 실행시킨다.
while : 조건을 만족해야지만 실행 블락을 실행한다.
/* while문
초기식
while (조건) {
실행블락 ;
증감식 ;
}
*/
/* do while문 :
초기식;
do {
실행블락 ;
증감식;
} while (조건) ;
*/
System.out.println("== do while 문 ==");
a = 0;
do {
System.out.println(a + " ");
}while(a < 0);
이 경우에도, do while은 0을 한번 실행 시킨다.
while의 조건에true를 넣을 경우, do - while문으로 무한루프가 가능하다.
스캐너로 인풋 받은 값을 선택시 해당 내용을 이중 for문을 사용해서 출력하세요
4. 프로그램 종료 시 까지 무한 루프를 돌려서 작동
이외의 내용을 선택시 "잘못된 입력입니다. 1 ~ 4까지만 넣어주세요"
Scanner sc = new Scanner (System.in);
int a;
do {
System.out.println("==================================================");
System.out.println("1. 구구단출력 | 2. 19단 출력 | 3. 19단 중 7의 배수 출력 | 4. 프로그램 종료");
System.out.println("==================================================");
System.out.println(" 위 번호를 입력하세요>> ");
a =sc.nextInt();
if(a == 1) {
System.out.println("1. 구구단 출력");
for(int i = 1; i < 10; i++) {
System.out.println();
System.out.print("\n"+i +"단 출력"+ "\n");
for(int j = 1; j < 10; j++) {
System.out.println();
System.out.print(i + "*" + j+ "=" + i * j);
}
}
}else if (a == 2) {
System.out.println("2. 19단 출력");
for(int i = 1; i < 20 ; i++) {
System.out.println();
System.out.print("\n"+i +"단 출력"+ "\n");
for(int j = 1; j < 20; j++) {
System.out.println();
System.out.print(i + "*" + j+ "=" + i * j);
}
}
}else if (a == 3) {
System.out.println("3. 19단 중 7의 배수 출력");
for(int i = 7; i < 20 ; i+=7) {
System.out.println();
System.out.print("\n"+i +"단 출력"+ "\n");
for(int j = 7; j < i ; j++) {
System.out.println();
System.out.print(i + "*" + j+ "=" + i * j);
}
}
}else if(a == 4) {
System.out.println("4. 프로그램 종료");
break;
}
}while(true);
sc.close();
}
}
<<실행 결과>>


if j == 3 이라면, j값 중에서 3의 값은 실행하지 않고 바깥 for문으로 다시 돌아가게함
: 반복문 내에서 continue를 만나면 아래 실행 블락을 실행하지 않고 증감식을 작동한다.