diff --git a/src/main/java/lotto/Application.java b/src/main/java/lotto/Application.java index d190922ba44..86b7b465ff6 100644 --- a/src/main/java/lotto/Application.java +++ b/src/main/java/lotto/Application.java @@ -1,7 +1,26 @@ package lotto; +import java.util.List; public class Application { public static void main(String[] args) { - // TODO: 프로그램 구현 + Input_Lotto_count inputLottoCount = new Input_Lotto_count(); + int lotto_count = inputLottoCount.Input(); //산 로또 개수 + Output_Random_Lotto outputRandomLotto = new Output_Random_Lotto(lotto_count); + outputRandomLotto.Random(); + List[] arr = outputRandomLotto.arr; //로또 번호 리스트들을 담은 배열 + InputDangchum inputDangchum = new InputDangchum(); + List DangList = inputDangchum.InputDangchumm(); //당첨번호 리스트 + Lotto lotto = new Lotto(DangList,arr); + String bonus = InputDangchum.Bonus_num(); //보너스 번호 입력하기 + lotto.vonus = bonus; //로또에 보너스 번호 넘겨주기. + lotto.listFor(); //랜덤번호와 당첨번호 비교하기. + int[] num = lotto.lotto_count; + Output_Result outputResult = new Output_Result(); + Output_Result.output(num); + Earn earn = new Earn(num,lotto_count); + + earn.output(); + } + } diff --git a/src/main/java/lotto/Dollars.java b/src/main/java/lotto/Dollars.java new file mode 100644 index 00000000000..a581414bad5 --- /dev/null +++ b/src/main/java/lotto/Dollars.java @@ -0,0 +1,27 @@ +/*package lotto; +enum Dollars1{ + ZERO,ONE,TWO,THREE,FOUR,FIVE,SIX; +} +enum Dollars2 { + ZERO("",0), + ONE("",0), + TWO("3개 일치 (5,000원) - ",5000), + THREE("4개 일치 (50,000원) - ",50000), + FOUR("5개 일치 (1,500,000원) - ",1500000), + FIVE("5개 일치, 보너스 볼 일치 (30,000,000원) - ",30000000), + SIX("6개 일치 (2,000,000,000원) - ",2000000000); + + private final String text; + private final int value; + Dollars2(String text,int value){ + this.text =text; + this.value = value; + } + public String getText(){ + return this.text; + } + public int getValue(){ + return this.value; + } +} +*/ \ No newline at end of file diff --git a/src/main/java/lotto/Earn.java b/src/main/java/lotto/Earn.java new file mode 100644 index 00000000000..682592d3ed8 --- /dev/null +++ b/src/main/java/lotto/Earn.java @@ -0,0 +1,50 @@ +package lotto; + +import java.util.Map; +import java.util.HashMap; + +public class Earn { + int[] lotto_count; + int lotto_value; + int sum; + Map dollarMap = new HashMap(); + Map LottoMap = new HashMap(); + //int[] value ={0,0,5000,50000,1500000,30000000,2000000};<-이전코드. 배열범위달라지면 예외를발생시킬 수 있는 코드 + Earn(int[] lotto_count,int lotto_value){ + this.lotto_count = lotto_count; //일치하는 갯수를 담은 배열 만약 리스트 2개가 3개 당첨번호가 같으면 lotto_count[2]=2 + this.lotto_value = lotto_value; //산 복권 개수 + } + //범위가 달라지면 예외발생하는 것을 막기위해 dollarMap으로 묶기 + void map(){ + + dollarMap.put(0,0); + dollarMap.put(1,0); + dollarMap.put(2,5000); + dollarMap.put(3,50000); //4개일치 + dollarMap.put(4,1500000); //5개 + dollarMap.put(5,30000000); //5개, 보너스번호일치 + dollarMap.put(6,2000000000); + LottoMap.put(0,lotto_count[0]); + LottoMap.put(1,lotto_count[1]); + LottoMap.put(2,lotto_count[2]); + LottoMap.put(3,lotto_count[3]); + LottoMap.put(4,lotto_count[4]); + LottoMap.put(5,lotto_count[5]); + LottoMap.put(6,lotto_count[6]); + } + void sum(){ + map(); + sum=0; + if(dollarMap.size()==LottoMap.size()){ + for(int i=0;i InputDangchumm(){ + System.out.println("당첨 번호를 입력해 주세요."); + String dangchum = Console.readLine(); //문자열 입력받기 + String[] dangchumArr = dangchum.split(","); //문자열로 들어온 숫자를 , 기준으로 쪼개서 배열에 넣기 + List dangArr = new ArrayList<>(); //당첨번호 저장할 리스트 만들기 + for(int i=0;i numbers; - - public Lotto(List numbers) { - validate(numbers); + private final List numbers; //당첨 번호 + List[] randoms; //랜덤 로또 번호 + int[] lotto_count = new int[7]; + String vonus; + public Lotto(List numbers,List[] randoms) { + validate(numbers); //예외확인 this.numbers = numbers; + this.randoms = randoms; } private void validate(List numbers) { + if (numbers.size() != 6) { - throw new IllegalArgumentException(); + throw new IllegalArgumentException("[ERROR]로또 번호의 개수가 6개를 넘어가면 안됩니다."); + } + + + } //당첨 번호 입력의 예외 처리 + + void listFor(){ //랜덤으로 받은 로또번호 리스트 갯수만큼 for문 돌리는 코드. 만약 8개 당첨번호 리스트가 있으면 8개의 리스트를 쭉 돌면서 비교해보는 코드 + + for(int i=0;i random){ + int count=0; + for(int j=0;j<6;j++){ + + if(numbers.contains(random.get(j))){ //리스트에 특정 값이 포함되어 있는지 확인 + count++; //특정 값이 있으면 count 수를 올림. + } + + } + if(count>=3){ + int bonusNum = Integer.parseInt(vonus); + if(count==5&&random.contains(bonusNum)){ //보너스 + 5개 맞추면 + lotto_count[5]+=1; + } + else if(count==5){ + lotto_count[4]+=1; + } + else { + lotto_count[count - 1] += 1; //if 첫번째 리스트에서 3개 일치 -> + //Lotto_count[2] = 1 + } + } + return count; + } + + + } - // TODO: 추가 기능 구현 -} diff --git a/src/main/java/lotto/Output_Random_Lotto.java b/src/main/java/lotto/Output_Random_Lotto.java new file mode 100644 index 00000000000..8c0863ee0c4 --- /dev/null +++ b/src/main/java/lotto/Output_Random_Lotto.java @@ -0,0 +1,24 @@ +package lotto; +import camp.nextstep.edu.missionutils.Randoms; +import java.util.List; +import java.util.Collections; +//구매한 로또 개수와 랜덤 로또 번호 출력하는 클래스 +public class Output_Random_Lotto { + int count; + List[] arr; //배열안에 리스트 저장 + Output_Random_Lotto(int count){ + arr = new List[count]; + this.count = count; + } + void Random(){ + System.out.println(count+"개를 구매했습니다."); + + for(int i=0;i numbers = Randoms.pickUniqueNumbersInRange(1, 45, 6); + Collections.sort(numbers); + arr[i] = numbers; //자바에서 배열 안, 리스트 사용법: arr[0].get(1) + System.out.println(numbers); + } + } + +} diff --git a/src/main/java/lotto/Output_Result.java b/src/main/java/lotto/Output_Result.java new file mode 100644 index 00000000000..fbd5ecc38a2 --- /dev/null +++ b/src/main/java/lotto/Output_Result.java @@ -0,0 +1,14 @@ +package lotto; + +public class Output_Result { +//결과를 출력하는 함수. + static void output(int[] lotto_count){ + System.out.println("당첨 통계\n---"); + System.out.println("3개 일치 (5,000원) - "+lotto_count[2]+"개"); + System.out.println("4개 일치 (50,000원) - "+lotto_count[3]+"개"); + System.out.println("5개 일치 (1,500,000원) - "+lotto_count[4]+"개"); + System.out.println("5개 일치, 보너스 볼 일치 (30,000,000원) - "+lotto_count[5]+"개"); + System.out.println("6개 일치, 보너스 볼 일치 (2,000,000,000원) - "+lotto_count[6]+"개"); + } + +}