본문 바로가기

LECTURE/# java basic

[초급 JAVA]자바 제어문 - while 제어문 /do~while() 제어문

반응형

자바 제어문 - while 제어문 /do~while() 제어문 


Programming

 
ExamWhile.java
package exam_control_statements;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ExamWhile {
public static void main(String[] ar) {
// while은 조건식만가진 반복문입니다.
// 그렇기때문에 while의 형태는 for문에서 선언부와 증감부를 뺀 형태를 가지고있습니다.
// while 의 형태
// while(조건식){내용}
int a = 0;
while (a < 10) {
System.out.println(a + "");
a++;
}
// 선언부와 증감식이 없기때문에 while전에 변수를 하나 선언했고,
// while안에서 변수를 1씩 증가시키는 증가식을 썼습니다.
// 네 그렇습니다. 이렇게보면 for문과 별 다르지 않습니다.그렇다면 while은 어떨때 많이 쓰일까요?
// while은 무한 루프를 돌릴때 많이 사용됩니다. 그리고 break과 같이 많이 쓰이지요.
// 프로그램을 만들때 어떨경우에는 어떠한내용이 계속해서 실행되어야 할때가 있습니다.

// 프로그램이 종료되기 전 까지요. 그러한 경우에 while을 많이 쓰죠.

// 전에 배웠던 BufferedReader 를 이용해 문자열을 입력받아 그대로 출력하는 프로그램을
// 만든다고 칩시다. 특정 문자열 'exit'를 입력받기전에는 프로그램은 끝나면안된다고 할 때
// while을 사용하면 됩니다.
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
while (true) {
try {
System.out.print("입력 : ");
String str = in.readLine();
if (str.equals("exit")) {
System.out.println("입력을 종료하였습니다.");
break;
} else {
System.out.println("입력하신 내용은 : " + str + " 입니다.");
}
} catch (IOException e) {
System.out.println("시스템 입력 오류입니다. 다시입력하세요");
}
}

// 물론 이 내용을 for문을 사용해도됩니다. for(;;)처럼 선언부,조건부,증감부를 빼고 빈칸으로 쓰면

// 무한루프를 돌린다는 뜻입니다. 위내용을 그대로 바꿔보겠습니다.
for (;;) {
try {
System.out.print("입력 : ");
String str = in.readLine();
if (str.equals("exit")) {
System.out.println("입력을 종료하였습니다.");
break;
} else {
System.out.println("입력하신 내용은 : " + str + " 입니다.");
}
} catch (IOException e) {
System.out.println("시스템 입력 오류입니다. 다시입력하세요");
}
}
// while의 형태중 do{}while() 문이라는것이있습니다. 프로그램을 만들다보면
// 어떠한 내용이 최소한번은 실행되고 반복되거나 아니면 그대로 끝나야 할 상황이 있을 수도있습니다.
// 그럴때 do~while문을 쓰지요.
boolean check = false;
do {
try {
if (check == false) {
System.out.print("반복 실행 ?[시작 : 'start' 종료 : 아무 키] ");
} else {
System.out.print("입력 : ");
}
String str = in.readLine();
if (str.equalsIgnoreCase("start") && check == false) {
check = true;
System.out.println("반복실행을 시작합니다.[종료 : 'exit']");
} else if (str.equals("exit")) {
System.out.println("입력을 종료하였습니다.");
break;// 또는 check=false
} else if (check == true) {
System.out.println("입력하신 내용은 : " + str + " 입니다.");
} else {
System.out.println("반복실행을 취소 하셨습니다.");
}
} catch (IOException e) {
System.out.println("시스템 입력 오류입니다. 다시입력하세요");
}
} while (check == true);
// while문의 조건부가 먼저 실행되었다면 check가 false이므로 바로끝나버렸겠지만,
// do의 내용이 먼저 한번 실행되기때문에 사용자에게 반복문을 사용할 것인지 물어보고
// check를 true로 바꾸어 반복문을 시작할 수 있죠. 좀 조잡한 예이긴해도 여러가지를 써볼 수있을것같아
// 저렇게 코딩해봤습니다. 좀더 고급스럽게 한번 바꿔보셔도될것같습니다.
}
}

모든 내용을 주석에 적어버렸네요. while문은 응용해서 간단한 프로그램을 만드는 포스팅을 할 때 같이 더 연습해봅시다. 개념은 for문가 그렇게 많이 다르지않기때문에 위에 소스를 직접 코딩하면서 주석을 꼼꼼히 보시면 이해하실 수 있으실겁니다.^^

Closing
소스는 모두 올려놓았습니다. github 링크는 나중에 좀더 자료가 많아지면 수정해서 올려놓도록하겠습니다. 일단 copy&paste를 해서 결과를 눈으로 확인하시고 설명을 보면서 직접 코딩을 해보세요. 대부분의 설명은 소스안에 주석에 써놓았으니, 주석을 참고하여 설명을 봐주세요.



반응형