DDIT_Advanced_Java <Set> 로또 구매 프로그램

Gyeomii·2022년 5월 18일
0

DDITAdvancedJava

목록 보기
2/6
post-thumbnail

📌Full Code

💾 [깃허브 Full Code]


📌Lotto Class

조건

  • 로또 1장에 1000원
  • 지불한 금액만큼 로또번호를 생성하고 거스름돈을 반환
  • 메뉴에서 종료를 선택할 때 프로그램이 종료

필드

  • isCountinue : while문이 계속 실행되도록 true를 저장
  • money : 입력받은 금액
  • change : 거스름돈

메소드

  • buyLotto() : 로또 구매 메소드
  • getLotto() : 로또번호 생성 메소드
  • menuNum() : 메뉴선택, 예외처리
  • main() : 메소드 실행
public class Lotto {
	Scanner scanner = new Scanner(System.in);
	boolean isCountinue = true; // while문을 실행할 boolean값
	int money; // 입력할 금액
	int change;// 거스름돈

	public void menu() {
		while (isCountinue) {
			System.out.println("================");
			System.out.println("Lotto 프로그램");
			System.out.println("----------------");
			System.out.println("1. Lotto 구입");
			System.out.println("2. 프로그램 종료");
			System.out.println("================");
			switch (menuNum()) {
			case 1: // 로또 구매 프로그램 실행
				try {
					buyLotto();
				} catch (Exception e) {
					System.out.println("Error : 잘못된 값이 입력되었습니다.");
					System.out.println("Error : 프로그램을 재시작합니다.");
					scanner.next();
				}
				break;
			case 2:
				System.out.println("감사합니다.");
				isCountinue = false; // while에 false를 반환
				break;
			default:
				System.out.println("잘못입력하셨습니다.");
			}
		}
	}

📌buyLotto()

  • 금액을 입력받으면 money에 저장하고 거스름돈은 change에 저장
  • 로또번호 생성횟수는 (지불금액/1000)만큼 실행
  • 로또번호는 getLottoNum()을 호출
	// 로또 구입
	public void buyLotto() throws Exception{
		money = 0;
		System.out.println("<<<<<<<<Lotto 구입 시작>>>>>>>>");
		System.out.println("[1000원에 로또번호 하나입니다.]");
		System.out.print("금액을 입력하세요 : ");

		money = scanner.nextInt();// 금액 입력
		change = money % 1000;// 거스름돈
		System.out.println();

		// 로또번호 출력
		if (money >= 1000) {
			System.out.println("행운의 로또번호는 아래와 같습니다.");
			for (int i = 0; i < (money / 1000); i++) {
				System.out.print("로또번호" + (i + 1) + ": ");
				getLottoNum();
				System.out.println();
			}
			System.out.println();
		} else { // 금액이 부족한 경우
			System.out.println("금액이 부족합니다.");
		}
		// 거스름돈 출력
		System.out.println("받은금액은 " + money + "원이고 " + "거스름돈은 " + change + "원 입니다.");
	}

📌getLottoNum()

  • 중복제거와 자동정렬을 위해 TreeSet 사용
  • 로또번호가 총 6개가 생성되도록 함
    -출력형식이 번호, 번호, 번호, 번호, 번호, 번호 가 되도록 함
// 로또 배열 생성
	public void getLottoNum() {
		TreeSet<Integer> tsLotto = new TreeSet<>();
		Random rndNum = new Random();
		// TreeSet에 로또번호 담기
		while (tsLotto.size() < 6) {
			tsLotto.add(rndNum.nextInt(45) + 1);
		}
		// '숫자, 숫자, 숫자' 로 출력하기 위한 for문
		int cnt = 0;
		for (int num : tsLotto) {
			if (cnt == 0) {
				System.out.print(num);
			} else {
				System.out.print(", " + num);
			}
			cnt++;
		}
	}

  • 메뉴번호를 입력받고 지정된 숫자면 반환하고 잘못된값이면 오류처리
public int menuNum() {
		while (true) {
			try { // 스캐너로 입력받은 번호를 반환
				System.out.print("메뉴 선택: ");
				int num = scanner.nextInt();
				return num;
			} catch (Exception e) { // 오류발생시 재실행
				System.out.println("Error : 잘못된 값이 입력되었습니다.");
				scanner.next();
			}
		}
	}

📌main()

  • 프로그램 실행
public static void main(String[] args) {
		Lotto lottoProgram = new Lotto();
		lottoProgram.menu();
	}
profile
김성겸

0개의 댓글