728x90
while
for문이 정해진 횟수만큼 반복하면, while문은 조건식이 true일 경우에 계속해서 반복하고, false가 되면 반복을 멈추고 while문을 종료한다.
while( 조건식 ) { 실행문; }
- 조건식을 평가
- 평가 결과 true면 실행문 실행
- 실행문 실행 후 조건식으로 되돌아감
- 조건식 재평가
- 조건식이 true면 2, 3, 4 반복 실행
- 조건식이 false면 while문 종료
만약 조건식이 계속 true이면 while(true) { ... }가 되어서 무한 반복한다. while문을 빠져 나가기 위한 코드가 필요하다.
while문 빠져 나가는 예제 코드
package ch04.sec05;
import java.util.Scanner;
public class KeyControlExample {
public static void main(String[] args) {
// Scanner 생성
Scanner scanner = new Scanner(System.in);
boolean run = true;
int speed = 0;
while (run) {
System.out.println("1. 증속 | 2. 감속 | 3. 중지 ");
System.out.println("선택 : ");
// 키보드에 입력한 내용 읽음
String strNum = scanner.nextLine();
// switch Expressions
switch (strNum) {
case "1" -> speed++;
case "2" -> speed--;
// while문의 조건식을 false로 만들어 종료
default -> run = false;
}
System.out.println("현재 속도 = " + speed);
}
System.out.println("프로그램 종료");
}
}
do-while
do-while 문은 조건식에 의해 반복 실행한다는 점은 while 문과 같다. while 문은 시작부터 조건식을 평가하여 실행문을 실행할지 결정하지만, 경우에 따라 블록 내부를 먼저 실행시키고, 실행 결과에 따라 반복 실행을 할지 결정하는 경우가 있다.
do { 실행문; } while ( 조건식 );
- 실행문 실행
- 조건식 평가
- true면 1, 2 반복 실행
- false면 do-while 문 종료
키보드로 입력받은 do-while 예제 코드
import java.util.Scanner;
public class DoWhileExample {
public static void main(String[] args) {
System.out.println("메세지 입력");
System.out.println("q: 프로그램 종료");
Scanner scanner = new Scanner(System.in); // Scanner 생성
String inputString;
do {
System.out.println(">");
inputString = scanner.nextLine(); // 키보드 읽기
System.out.println("inputString = " + inputString);
} while (!inputString.equals("q"));
System.out.println();
System.out.println("프로그램 종료");
}
}
코드 실행 후 보다가 그럼 더 짧게 while문으로 충분히 가능하지 않을까 하고 while문으로 변경했다.
import java.util.Scanner;
public class DoWhileExample {
public static void main(String[] args) {
System.out.println("메세지 입력");
System.out.println("q: 프로그램 종료");
Scanner scanner = new Scanner(System.in); // Scanner 생성
String inputString = scanner.nextLine();
while (!inputString.equals("q")) {
System.out.println("inputString = " + inputString);
}
System.out.println("프로그램 종료");
}
}
출력 결과
조건식이 계속 true라 무한 반복이길래 매우 당황했다. do-while이 있는 이유가 다 있지... 그치...
728x90
'IT > Java' 카테고리의 다른 글
[Java] 참조 타입 (0) | 2024.02.26 |
---|---|
[Java] break / continue (0) | 2024.02.23 |
[Java] for문 (0) | 2024.02.22 |
[Java] switch (0) | 2024.02.22 |
[Java] Math.random() (0) | 2024.02.21 |