반복문 Do While 구문 4월3일
반복문에는 여러 종류가 있는데 왜 do while 문을 써야 할까
실행문을 반드시 1번을 보여줘야 할때 do while을 사용한다.
참고.
for 문은 시행횟수가 정해져있을때 주로 사용한다.
while 문은 시행횟수가 일정치 않을때 주로 사용한다.
package ch07;
public class SimpleDoWhile {
// 코드의 진입점 (메인함수)
public static void main(String[] args) {
// how와 why를 생각하라
// do { // 반드시 한 번은 수행이 된다. } while (조건식);
// 반복적인 패턴이 보인다면 반복문을 활용할 수 있다.
// while 문
// 반복의 횟수가 불명확할 수 있다.
// 조건에 따라 결정된다.
// for 문
// 보통 반복의 횟수가 명확하다
// do while 문
// 수행 구문이 한 번은 실행이 돼야 할 때 선택한다
int count = 0; // 무한루프 주의
do {
System.out.println("안녕!");
count++; // 증감식
} while (count < 5);
System.out.println(count + "번 인사 했어요!");
} // end of main
} // end of class
사용자로부터 입력값을 받아서 수행되는 프로그램에서 do while 문이 유용하게 활용될 수 있다.
아래는
do while 문
if 문
scanner 메소드를 동시에 활용한 예
package ch07;
import java.util.Scanner;
public class SimpleDoWhile2 {
// 코드의 진입점 (메인함수)
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// int choice = sc.nextInt();
// System.out.println("메뉴를 선택하세요");
// System.out.println("1. 햄버거");
// System.out.println("2. 피자");
// System.out.println("3. 종료");
// if(choice ==1 ) {
// System.out.println("햄버거를 주문했어요");
// } else if(choice == 2) {
// System.out.println("피자를 주문했어요");
// } else {
// System.out.println("종료하셨네요");
// }
int choice;
do {
System.out.println("메뉴를 선택하세요");
System.out.println("1. 햄버거");
System.out.println("2. 피자");
System.out.println("3. 종료");
choice = sc.nextInt();
if (choice == 1) {
System.out.println("햄버거를 주문했어요");
} else if (choice == 2) {
System.out.println("피자를 주문했어요");
} else {
System.out.println("종료하셨네요");
}
System.out.println("========================");
} while (choice != 3);
// choice != 3
} // end of main
} // end of class
do while 문
if 문
scanner 메소드
활용해 시험문제를 만들어 볼 수도 있다.
package ch07;
import java.util.Scanner;
public class SimpleDoWhile3 {
// 코드의 진입점 (메인함수)
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int answer = 7; // 맞춰야 할 숫자
int guess;
do {
System.out.println("1부터 10까지 숫자를 맞춰보세요");
guess = sc.nextInt();
if (guess != answer) {
System.out.println("틀렸습니다. 다시 시도하세요");
} else {
System.out.println("정답입니다." + answer + "를 맞췄어요");
}
// guess 값과 answer 값이 다르다면 반복한다.
// 테스트값 7 != 7 -> 왼쪽항 7과 오른쪽항 7이 다르다고 말하고 있다.
} while (guess != answer);
} // end of main
} // end of class
랜덤 숫자를 만드는 메소드를 이용해서 주사위 놀이를 만들어 봤다.
math.random 메소드는 0~1까지의 실수를 생성한다.
이를 활용하면 1~6까지 정수를 만드는 도구로 활용할 수 있다.
int dice = (int)(Math.random() * 6) + 1;
아래 예문은 주사위 6이 나올때까지 랜덤숫자를 생성하는 예문이다.
package ch07;
public class SimpleDoWhile4 {
// 코드의 진입점 (메인함수)
public static void main(String[] args) {
// 자바 개발자들이 미리 만들어 둔 도구들이 있다.
// Scanner
// 랜덤 숫자를 만들어주는 도구도 있다.
// Math.random
// 0부터 1 사이 실수를 반환해준다.
// -----------------------0.1 * 6 + 1
// 1부터 6까지의 정수값을 만들어낼 수 있ㄷ
// int a = (int) (Math.random() * 6) + 1;
// System.out.println("a : " + a);
System.out.println("주사위를 던져서 6이 나올 때까지 계속합니다.");
int dice;
int rolls = 0; // 던진 횟수 카운트
// 1. 랜덤숫자 1~6 값을 dice 변수에 담아주세요
// 2. 던진 횟수를 증가시켜 주세요
// 3. dice 값이 6이 나올 때까지 반복해주세요
// do {
// dice = (int) (Math.random() * 6) + 1;
// System.out.println("dice : " + dice);
// rolls++;
// } while (dice != 6);
do {
// 1. 랜덤숫자 1~6 값을 dic 변수에 담아주세요
dice = (int)(Math.random() * 6) + 1; // 0.0 ~ 0.6 미만
// 2. 던진 횟수를 증가시켜 주세요
rolls++; // 던짓횟수증가 (카운팅)
System.out.println("주사위를 던졌습니다 : " + dice);
// 6이 아니라면 계속 반복해
// true 1 != 6 -> true
} while(dice != 6);
// 3. dice 값이 6이 나올 때까지 반복해주세요.
// 4. 최종 출력값
System.out.println("6이 나왔습니다. 총" + rolls + "번 던졌어요");
} // end of main
} // end of class
연습문제
do while 문
if 문
scanner 메소드를 이용한 조금 더 복잡한 예문이다.
package exercise;
import java.util.Scanner;
public class DoWhileExercise1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int choice;
do {
System.out.println("메뉴 선택");
System.out.println("1.등록 2.조회 3.수정 4.삭제 0.종료");
choice = sc.nextInt();
System.out.println("선택 : " + choice);
if (choice == 1) {
System.out.println("등록을 선택했습니다.");
} else if (choice == 2) {
System.out.println("조회를 선택했습니다.");
} else if (choice == 3) {
System.out.println("수정을 선택했습니다.");
} else if (choice == 4) {
System.out.println("삭제를 선택했습니다.");
} else if (choice == 0) {
System.out.println("프로그램을 종료합니다.");
} else {
System.out.println("잘못된 입력입니다. 다시 선택해주세요.");
}
System.out.println("========================");
} while(choice != 0);
} // end of main
} // end of class
기타 이중 for 문을 활용한 응용문장을 써봤다.
연습이 필요해보인다.
package exercise;
public class DoWhileExercise2 {
public static void main(String[] args) {
for (int n = 0; n < 3; n++) {
for (int i = 0; i < 3; i++) {
System.out.print(i);
}
System.out.println();
} // outer
System.out.println("============================");
for (int n = 1; n < 5; n++) {
for (int i = 0; i < n; i++) {
System.out.print("*");
}
System.out.println();
} // outer
System.out.println("============================");
for (int n = 1; n < 10; n++) {
for (int i = 0; i < n; i++) {
System.out.print("*");
}
System.out.println();
} // outer
System.out.println("============================");
for (int n = 4; n > 0; n--) {
for (int i = 0; i < n; i++) {
System.out.print("*");
}
System.out.println();
} // outer
} // end of main
} // end of class
슬슬 겉으로만 봐서는 이해하기 어려운 부분들이 생기고 있다.
외워야 하는 부분은 외우면서 이해할 수 있도록 노력하자