Skip to content

Instantly share code, notes, and snippets.

@FeelingXD
Last active January 5, 2023 14:06
Show Gist options
  • Save FeelingXD/82d681a2c3ec2ce7c92f616f2bcdb3cc to your computer and use it in GitHub Desktop.
Save FeelingXD/82d681a2c3ec2ce7c92f616f2bcdb3cc to your computer and use it in GitHub Desktop.
로또생성기
/*
작성자: 고지민
*/
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int[] winning_number=createNumber();
System.out.println("[로또 당첨 프로그램]\n");
int lottery_amount=inputInt("로또 개수를 입력해 주세요.(숫자 1 ~ 10):",input,1,10);
int[][] my_lottery=myLottery(lottery_amount);
for(int i=0;i<lottery_amount;i++){
System.out.printf("%c ", (char)(i+65)); // Ascii
printNumber(my_lottery[i]);
System.out.println();
}
// winning number
System.out.println("\n[로또 발표]");
System.out.print(" ");
printNumber(winning_number);
System.out.println();
// result
System.out.println("\n[내 로또 결과]");
for(int i=0;i<lottery_amount;i++){
System.out.printf("%c ", (char)(i+65)); // Ascii
printNumber(my_lottery[i]);
System.out.printf(" => %d개 일치\n",compareNumber(my_lottery[i],winning_number));
}
}
public static int inputInt(String message,Scanner input,int min,int max){
try{
System.out.print(message);
int value = input.nextInt();
if (value<min||value>max){
throw new Exception();
}
return value;
}catch (Exception e){
System.out.println("다시 입력해주세요.");
return inputInt(message,input,min,max);
}
}
public static void printNumber(int[] numbers){
for(int i=0;i<numbers.length;i++){
if(i<numbers.length-1)
System.out.printf("%02d,",numbers[i]);
else
System.out.printf("%02d",numbers[i]);
}
}
public static int[][] myLottery(int cnt){
int[][] mylottery = new int[cnt][7];
for(int i=0;i<cnt;i++){
mylottery[i]=createNumber();
}
return mylottery;
}
public static int[] createNumber(){ // 7자리 넘버생성
Random rnd = new Random();
int[] created_number=new int[7];
Arrays.fill(created_number,0);
for(int i =0;i<7;i++){
rnd.setSeed(System.currentTimeMillis() + rnd.nextInt(10000));
created_number[i]=avoidDuplication(created_number,rnd);
}
Arrays.sort(created_number);
return created_number;
}
public static int avoidDuplication(int[] arr,Random rnd){ //중복 넘버 방지
int value =rnd.nextInt(45)+1;
if (Arrays.stream(arr).anyMatch(i -> i==value))
return avoidDuplication(arr,rnd);
else
return value;
}
public static int compareNumber(int[] arr1,int[] arr2){
int cnt=0;
for (int i=0;i< arr1.length;i++){
if(arr1[i]==arr2[i]){
cnt++;
}
}
return cnt;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment