로또구매-Collection

이중호·2021년 11월 1일
0

고급자바

목록 보기
1/6

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


예시)
        ==========================
         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. 프로그램 종료
	==========================		 
	메뉴선택 : 1  <-- 입력
			
	 Lotto 구입 시작
		 
	(1000원에 로또번호 하나입니다.)
	금액 입력 : 900  <-- 입력
	
	입력 금액이 너무 적습니다. 로또번호 구입 실패!!!

	==========================
         Lotto 프로그램
	--------------------------
	 1. Lotto 구입
	 2. 프로그램 종료
	==========================		 
	메뉴선택 : 1  <-- 입력
			
	 Lotto 구입 시작
		 
	(1000원에 로또번호 하나입니다.)
	금액 입력 : 101000  <-- 입력
	
	입력 금액이 너무 많습니다. 로또번호 구입 실패!!!
			
   	==========================
         Lotto 프로그램
	--------------------------
	  1. Lotto 구입
	  2. 프로그램 종료
	==========================		 
	메뉴선택 : 2  <-- 입력
		
	감사합니다

public class LottoProgram {

	Scanner scan = new Scanner(System.in);
	int times = 0;
	int changes = 0;
	int price = 0;
	public void menu(){
		while(true){
			System.out.println("==========================");
			System.out.println("Lotto 프로그램");
			System.out.println("--------------------------");
			System.out.println("1.Lotto 구입");
			System.out.println("2.프로그램 종료");
			System.out.println("==========================");
			System.out.print("\n메뉴선택:");
			int input = scan.nextInt();
			switch(input){
			case 1: 
				lottoGame();
				break;
			case 2:
				System.out.println("\n감사합니다");
				System.exit(0);
			}
		}
	}
	
	public void lottoGame(){
		System.out.println("\nLotto 구입 시작\n");
		System.out.println("(1000원에 로또번호 하나입니다.)");
		
		priceCheck();
		if(times==0 || times>100) return;
		System.out.println("\n행운의 로또번호는 아래와 같습니다.");
		for(int i=0; i<times; i++){
			System.out.print("로또번호"+(i+1)+" : ");
			getLotto();
		}
		
		System.out.println("\n받은 금액은 "+price+"원이고 거스름돈은 "+changes+"원입니다.\n");
	}
	
	public void priceCheck(){
		times = 0;
		changes = 0;
		System.out.print("금액 입력:");
		price = scan.nextInt();
		if(price < 1000) {
			System.out.println("\n입력 금액이 너무 적습니다. 로또번호 구입 실패!!!\n");
		}
		else if(price > 100000) System.out.println("입력 금액이 너무 많습니다. 로또번호 구입 실패!!!\n");
		else{
			times = price/1000;
			changes = price%1000;
		}
	}
	
	public void getLotto(){
		Set<Integer> lottoSet = new HashSet<>();
		while(lottoSet.size()<6){
			lottoSet.add((int)(Math.random()*45)+1);
		}
		List<Integer> lottoList = new ArrayList<>(lottoSet);
		Collections.sort(lottoList);
		for(int i=0; i<lottoList.size(); i++){
			if(i==lottoList.size()-1) {
				System.out.println(lottoList.get(i));
				break;
			}
			System.out.print(lottoList.get(i)+",");
		}
	}
	
	public static void main(String[] args) {
		new LottoProgram().menu();
	}
}
profile
배워가는 신입개발자

0개의 댓글