From 5b34d207e9fc918f457a9e31c7f3e7d4e2dd83ee Mon Sep 17 00:00:00 2001 From: haewon Date: Thu, 11 Jul 2024 21:58:45 +0900 Subject: [PATCH 1/4] Input_Lotto_count --- src/main/java/lotto/Application.java | 7 +++++-- src/main/java/lotto/Input_Lotto_count.java | 16 ++++++++++++++++ src/main/java/lotto/Output_Lotto_count.java | 19 +++++++++++++++++++ 3 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 src/main/java/lotto/Input_Lotto_count.java create mode 100644 src/main/java/lotto/Output_Lotto_count.java diff --git a/src/main/java/lotto/Application.java b/src/main/java/lotto/Application.java index d190922ba44..1e70ae5ff0a 100644 --- a/src/main/java/lotto/Application.java +++ b/src/main/java/lotto/Application.java @@ -1,7 +1,10 @@ package lotto; - +import camp.nextstep.edu.missionutils.Console; public class Application { public static void main(String[] args) { - // TODO: 프로그램 구현 + Input_Lotto_count count = new Input_Lotto_count(); + int lotto_count = count.Input(); + Output_Lotto_count Ocount = new Output_Lotto_count(lotto_count); + Ocount.Random(); } } diff --git a/src/main/java/lotto/Input_Lotto_count.java b/src/main/java/lotto/Input_Lotto_count.java new file mode 100644 index 00000000000..b310d5683a9 --- /dev/null +++ b/src/main/java/lotto/Input_Lotto_count.java @@ -0,0 +1,16 @@ +package lotto; +import java.util.Scanner; +//로또 금액 입력받기 +public class Input_Lotto_count { + + int Input() { + System.out.println("구입금액을 입력해 주세요"); + Scanner scanner = new Scanner(System.in); + int number = scanner.nextInt(); + scanner.nextLine(); + if(number%1000!=0){ + throw new IllegalArgumentException(); + } + return number/1000; + } +} diff --git a/src/main/java/lotto/Output_Lotto_count.java b/src/main/java/lotto/Output_Lotto_count.java new file mode 100644 index 00000000000..ef9135a3f7e --- /dev/null +++ b/src/main/java/lotto/Output_Lotto_count.java @@ -0,0 +1,19 @@ +package lotto; +import camp.nextstep.edu.missionutils.Randoms; +import java.util.List; +public class Output_Lotto_count { + int count; + Output_Lotto_count(int count){ + this.count = count; + } + void Random(){ + System.out.println(count+"개를 구매했습니다."); + List[] arr = new List[count]; + for(int i=0;i numbers = Randoms.pickUniqueNumbersInRange(1, 45, 6); + arr[i] = numbers; + System.out.println(numbers); + } + } + +} From b08b2c961609c43072111a3feedc2e9b5df998f8 Mon Sep 17 00:00:00 2001 From: haewon Date: Sun, 14 Jul 2024 01:52:36 +0900 Subject: [PATCH 2/4] result --- src/main/java/lotto/Application.java | 28 ++++++++ src/main/java/lotto/Dollars.java | 27 ++++++++ src/main/java/lotto/Earn.java | 24 +++++++ src/main/java/lotto/Input_Lotto_count.java | 4 +- src/main/java/lotto/Lotto.java | 74 +++++++++++++++++++-- src/main/java/lotto/Output_Lotto_count.java | 9 ++- 6 files changed, 155 insertions(+), 11 deletions(-) create mode 100644 src/main/java/lotto/Dollars.java create mode 100644 src/main/java/lotto/Earn.java diff --git a/src/main/java/lotto/Application.java b/src/main/java/lotto/Application.java index 1e70ae5ff0a..8c7a94b8fe2 100644 --- a/src/main/java/lotto/Application.java +++ b/src/main/java/lotto/Application.java @@ -1,10 +1,38 @@ package lotto; import camp.nextstep.edu.missionutils.Console; + +import java.util.ArrayList; +import java.util.List; public class Application { public static void main(String[] args) { Input_Lotto_count count = new Input_Lotto_count(); int lotto_count = count.Input(); Output_Lotto_count Ocount = new Output_Lotto_count(lotto_count); Ocount.Random(); + List[] arr = Ocount.arr; //로또 번호 리스트들을 담은 배열 + List DangList = InputDangchum(); + Lotto lotto = new Lotto(DangList,arr); + + System.out.println("보너스 번호를 입력해 주세요."); + String bonus = Console.readLine(); + lotto.vonus = bonus; + lotto.compare1(); + lotto.output(); + int[] num = lotto.lotto_count; + Earn earn = new Earn(num,lotto_count); + + earn.output(); + + } +//당첨번호를 입력하여 리스트에 저장하는 함수 + public static List InputDangchum(){ //당첨번호를 입력하는 함수 + System.out.println("당첨 번호를 입력해 주세요."); + String dangchum = Console.readLine(); + String[] dangchumm = 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개를 넘어가면 안됩니다."); + } + for(int i=0;i random){ + int count=0; + for(int j=0;j<6;j++){ + + if(numbers.contains(random.get(j))){ //리스트에 특정 값이 포함되어 있는지 확인 + count++; + } + + } + if(count>=3){ + int bonusNum = Integer.parseInt(vonus); + if(count==5&&random.contains(bonusNum)){ + 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; + } + void output(){ + 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]+"개"); + } + //이 코드와 Dollars 라는 enum코드를 추가하면 에러가 남. 일단 없이 구현.. + /* void output(){ + int count =2; + for(Dollars2 dollar:Dollars2.values()){ + System.out.println(dollar.getText()+lotto_count[count]+"개"); + count++; + + }*/ + } - // TODO: 추가 기능 구현 -} diff --git a/src/main/java/lotto/Output_Lotto_count.java b/src/main/java/lotto/Output_Lotto_count.java index ef9135a3f7e..59fc27e64c2 100644 --- a/src/main/java/lotto/Output_Lotto_count.java +++ b/src/main/java/lotto/Output_Lotto_count.java @@ -1,17 +1,22 @@ package lotto; import camp.nextstep.edu.missionutils.Randoms; import java.util.List; +import java.util.Collections; +//구매한 로또 개수와 랜덤 로또 번호 출력하는 클래스 public class Output_Lotto_count { int count; + List[] arr; //배열안에 리스트 저장 Output_Lotto_count(int count){ + arr = new List[count]; this.count = count; } void Random(){ System.out.println(count+"개를 구매했습니다."); - List[] arr = new List[count]; + for(int i=0;i numbers = Randoms.pickUniqueNumbersInRange(1, 45, 6); - arr[i] = numbers; + Collections.sort(numbers); + arr[i] = numbers; //자바에서 배열 안, 리스트 사용법: arr[0].get(1) System.out.println(numbers); } } From 8e00cfeee621cf218fc09b42a7fbfc85aace4812 Mon Sep 17 00:00:00 2001 From: haewon Date: Sun, 14 Jul 2024 02:18:02 +0900 Subject: [PATCH 3/4] resulttt --- src/main/java/lotto/Earn.java | 1 + src/main/java/lotto/Lotto.java | 8 +------- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/main/java/lotto/Earn.java b/src/main/java/lotto/Earn.java index 2246cba0dd8..f86b48bf50c 100644 --- a/src/main/java/lotto/Earn.java +++ b/src/main/java/lotto/Earn.java @@ -19,6 +19,7 @@ void output(){ sum(); int Lotto = lotto_value*1000; double total = (double)sum/Lotto*100; + total = Math.round(total*100)/100.0; System.out.println("총 수익률은 "+total+"%입니다."); } } diff --git a/src/main/java/lotto/Lotto.java b/src/main/java/lotto/Lotto.java index 353dcb04c3f..4f7548c0dc4 100644 --- a/src/main/java/lotto/Lotto.java +++ b/src/main/java/lotto/Lotto.java @@ -19,13 +19,7 @@ private void validate(List numbers) { if (numbers.size() != 6) { throw new IllegalArgumentException("[ERROR]로또 번호의 개수가 6개를 넘어가면 안됩니다."); } - for(int i=0;i Date: Wed, 17 Jul 2024 23:14:34 +0900 Subject: [PATCH 4/4] =?UTF-8?q?=EC=88=98=EC=A0=95=EB=B3=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/lotto/Application.java | 38 +++++++------------ src/main/java/lotto/Earn.java | 37 +++++++++++++++--- src/main/java/lotto/InputDangchum.java | 26 +++++++++++++ src/main/java/lotto/Input_Lotto_count.java | 23 +++++++---- src/main/java/lotto/Lotto.java | 27 ++++--------- ...to_count.java => Output_Random_Lotto.java} | 4 +- src/main/java/lotto/Output_Result.java | 14 +++++++ 7 files changed, 108 insertions(+), 61 deletions(-) create mode 100644 src/main/java/lotto/InputDangchum.java rename src/main/java/lotto/{Output_Lotto_count.java => Output_Random_Lotto.java} (90%) create mode 100644 src/main/java/lotto/Output_Result.java diff --git a/src/main/java/lotto/Application.java b/src/main/java/lotto/Application.java index 8c7a94b8fe2..86b7b465ff6 100644 --- a/src/main/java/lotto/Application.java +++ b/src/main/java/lotto/Application.java @@ -1,38 +1,26 @@ package lotto; -import camp.nextstep.edu.missionutils.Console; -import java.util.ArrayList; import java.util.List; public class Application { public static void main(String[] args) { - Input_Lotto_count count = new Input_Lotto_count(); - int lotto_count = count.Input(); - Output_Lotto_count Ocount = new Output_Lotto_count(lotto_count); - Ocount.Random(); - List[] arr = Ocount.arr; //로또 번호 리스트들을 담은 배열 - List DangList = InputDangchum(); + 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); - - System.out.println("보너스 번호를 입력해 주세요."); - String bonus = Console.readLine(); - lotto.vonus = bonus; - lotto.compare1(); - lotto.output(); + 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(); } -//당첨번호를 입력하여 리스트에 저장하는 함수 - public static List InputDangchum(){ //당첨번호를 입력하는 함수 - System.out.println("당첨 번호를 입력해 주세요."); - String dangchum = Console.readLine(); - String[] dangchumm = dangchum.split(","); - List dangArr = new ArrayList<>(); - for(int i=0;i 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; - this.lotto_value = 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; - 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) { } //당첨 번호 입력의 예외 처리 - void compare1(){ + void listFor(){ //랜덤으로 받은 로또번호 리스트 갯수만큼 for문 돌리는 코드. 만약 8개 당첨번호 리스트가 있으면 8개의 리스트를 쭉 돌면서 비교해보는 코드 for(int i=0;i random){ + //lotto_count 배열에 일치하는게 5개면 [4]에 1 추가, 이런식으로 비교해나가면서 배열에 값을 추가하는 함수. + int compare(List random){ int count=0; for(int j=0;j<6;j++){ if(numbers.contains(random.get(j))){ //리스트에 특정 값이 포함되어 있는지 확인 - count++; + count++; //특정 값이 있으면 count 수를 올림. } } if(count>=3){ int bonusNum = Integer.parseInt(vonus); - if(count==5&&random.contains(bonusNum)){ + if(count==5&&random.contains(bonusNum)){ //보너스 + 5개 맞추면 lotto_count[5]+=1; } else if(count==5){ @@ -54,21 +55,7 @@ else if(count==5){ } return count; } - void output(){ - 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]+"개"); - } - //이 코드와 Dollars 라는 enum코드를 추가하면 에러가 남. 일단 없이 구현.. - /* void output(){ - int count =2; - for(Dollars2 dollar:Dollars2.values()){ - System.out.println(dollar.getText()+lotto_count[count]+"개"); - count++; - }*/ + } diff --git a/src/main/java/lotto/Output_Lotto_count.java b/src/main/java/lotto/Output_Random_Lotto.java similarity index 90% rename from src/main/java/lotto/Output_Lotto_count.java rename to src/main/java/lotto/Output_Random_Lotto.java index 59fc27e64c2..8c0863ee0c4 100644 --- a/src/main/java/lotto/Output_Lotto_count.java +++ b/src/main/java/lotto/Output_Random_Lotto.java @@ -3,10 +3,10 @@ import java.util.List; import java.util.Collections; //구매한 로또 개수와 랜덤 로또 번호 출력하는 클래스 -public class Output_Lotto_count { +public class Output_Random_Lotto { int count; List[] arr; //배열안에 리스트 저장 - Output_Lotto_count(int count){ + Output_Random_Lotto(int count){ arr = new List[count]; this.count = count; } 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]+"개"); + } + +}