romworld

컬렉션 프레임워크 연습문제2(로또 프로그램) 본문

JAVA/문제풀이

컬렉션 프레임워크 연습문제2(로또 프로그램)

inderrom 2022. 10. 28. 01:39

 

package kr.or.ddit.basic;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Random;
import java.util.Scanner;

public class LottoStore {
	private Scanner scan = new Scanner(System.in);

	public static void main(String[] args) {
		new LottoStore().lottoStart();
//		LottoStore lotto = new LottoStore();
//		lotto.lottoStart();
	}

	public void lottoStart() {

		while (true) {
			int choice = displayMenu();

			switch (choice) {
			case 1:
				buyLotto();
				break; // 로또 구입
			case 2:
				System.out.println("감사합니다.");
				return; // 프로그램 종료
			default:
				System.out.println("번호를 잘못 입력했습니다 1 또는 2를 눌러주세요");
			}
		}
	}

	// 로또 구입을 처리하는 메서드
	private void buyLotto() {
		System.out.println();
		System.out.println("Lotto 구입 시작");
		System.out.println("");
		System.out.println("(1000원에 로또번호 하나입니다.)");
		System.out.println("금액 입력 : ");

		int money = scan.nextInt();
		if (money < 1000) {
			System.out.println("입력금액이 너무 적습니다. 로또번호 구입 실패!!!");
			return;
		}

		if (money >= 101000) {
			System.out.println("금액이 너무 많습니다. 로또번호 구입 실패 !!!");
			return;
		}

		HashSet<Integer> lottoSet = new HashSet<Integer>();

		// 구매할 로또의 개수 구하기
		int count = money / 1000;
		Random rnd = new Random();

		System.out.println();
		System.out.println("행운의 로또번호는 아래와 같습니다.");
		for (int i = 1; i <= count; i++) { // 구매 개수만큼 반복
			while (lottoSet.size() < 6) { // 로또 번호만들기 ==>1 ~ 45사이의 중복되지 않는 6개의 숫자 만들기
				lottoSet.add(rnd.nextInt(45) + 1);
			}
			// Set에 만들어진 로또번호를 List에 담고, 정렬하여 출력한다.
			ArrayList<Integer> lottoList = new ArrayList<Integer>(lottoSet);
			Collections.sort(lottoList);
			System.out.println("로또번호" + i + " : " + lottoList);

			lottoSet.clear(); // Set에 저장된 이전에 만들어진 번호를 모두 삭제한다.
		}

		System.out.println();
		System.out.println("받은 금액은" + money + "원이고, 거스름돈은" + (money % 1000) + "원 입니다.");

	}

	// 메뉴를 출력하고 선택번호를 입력받아 반환하는 메서드
	public int displayMenu() {

		System.out.println();
		System.out.println("========================");
		System.out.println("    Lotto 프로그램");
		System.out.println("------------------------");
		System.out.println("   1. Lotto 구입");
		System.out.println("   2. 프로그램 종료");
		System.out.println("=========================");
		System.out.println("   메뉴선택 : ");
		System.out.println();
		return scan.nextInt();

	}

}
Comments