중급과정/HighJava

[Java] 로또 구매 프로그램 예제 (ArrayList, HashSet, Collections)

whalerice 2023. 11. 30. 08:58

 

로또를 구매하는 프로그램 작성하기
 
 사용자는 로또를 구매할 때 구매할 금액을 입력하고
 입력한 금액에 맞게 로또번호를 출력한다.
 (단, 로또 한장의 금액은 1000원이고 거스름돈도 계산하여
      출력한다.)

==========================
         Lotto 프로그램
--------------------------
 1. Lotto 구입
  2. 프로그램 종료
==========================  
메뉴선택 : 1  <-- 입력

 Lotto 구입 시작
 
(1000원에 로또번호 하나입니다.)
금액 입력 : 2500  <-- 입력

행운의 로또번호는 아래와 같습니다.
로또번호1 : 2,3,4,5,6,7
로또번호2 : 20,21,22,23,24,25

받은 금액은 2500원이고 거스름돈은 500원입니다.

     ==========================
         Lotto 프로그램
--------------------------
  1. Lotto 구입
  2. 프로그램 종료
==========================  
메뉴선택 : 2  <-- 입력

감사합니다

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;



public class Homework02_Lotto {
	
	public static void main(String[] args) {
		

		System.out.println();
		while (true) {
			printMain();
			Scanner sc = new Scanner(System.in);
			int select = sc.nextInt();
			if (select == 1) {
				System.out.println("----------Lotto 구입 시작----------");
				lottoBuy();
			}
			if (select == 2) {
				System.out.println("===============================");
				System.out.println();
				System.out.println("                       감사합니다.");
				System.out.println();
				System.out.println("===============================");
				break;
			}
			
		}
	}

	public static void lottoBuy() {
		System.out.println("    (1000원에 로또번호 하나입니다.)");
		while (true) {
			Scanner sc = new Scanner(System.in);
			System.out.print("금액 입력: ");
			int user = sc.nextInt(); // 유저가 낼 돈
			int lotto = user / 1000; // 로또 갯수
			int change = user % 1000; // 거스름돈
			if (user < 1000) {
				System.out.println("1000원 이상 입력해주세요.");
			}
			else {
				System.out.println("======행운의 로또번호는 아래와 같습니다======");
				// 로또번호 45까지 랜덤으로 돌린 후 넣기
				// 로또 갯수만큼 6개씩 번호를 뽑는 것을 반복하도록 해줍니다.
				for (int i = 0; i < lotto; i++) {
					Set<Integer> intRnd = new HashSet<>();
					while (intRnd.size() < 6) {
						int num = (int) (Math.random() * 45 + 1);
						intRnd.add(num);
					}
					List<Integer> lottoList = new ArrayList<>(intRnd);
					//담아서 정렬해주기
					Collections.sort(lottoList);
					//장수만큼 번호 반복해서 출력
					System.out.println("로또번호" + (i + 1) + ": " + lottoList);
				}
				System.out.println();
				System.out.println("받은 금액은 " + user + "원이고 거스름돈은 " + change + "원 입니다.");
				System.out.println();
				break;
			}
		}
	}

	
	public static void printMain() {

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