/**
ex)
lotto game count(1~9)? 3
game 1 ? 10 15 20 30 35 40
game 2 ? 1 7 24 29 40 45
game 3 ? 12 19 23 33 39 41
select continue(y/n)?y
조건)
1) 로또 입력부분 - gameCount();
2) 로또를 발생하는 메소드 - lotto();
3) 결과를 출력하는 부분 - result();
4) 전체 흐름을 제어하는 메소드 - process();
5) 계속 수행여부를 결정하는 메소드 - select();
6) 중복되지 않는 결과가 출력되도록 합니다.
7) 각 게임결과를 오름차순으로 정렬하여 출력합니다.
*/
public class LottoGame{
// lotto 를 발생하는 메소드
int lotto(){
return (int)(1+Math.random()*45); // 1~45까지의 난수 도출 방법
}
// 게임수를 입력받는 메소드
int gameCount()throws Exception{
System.out.print("Lotto Game count(1~9)?");
int count=System.in.read()-48;
System.in.read(); // console 일 경우 이 문장을 한번더 써야한다. 버퍼 비우는 과정
return count;
}
// 게임 흐름을 제어하는 메소드(주 메소드)
void process() throws Exception{
// 한 게임의 숫자를 받는 배열
int data[]=new int[6];
// 게임의 수 얻는다.
int count = gameCount();
// 게임 수 만큼 루프를 돌린다.
for(int i=1;i<=count;i++){
//각 게임마다 6개의 숫자를 받기 위한 루프
for(int j=0;j<data.length;j++){
data[j]=lotto();
}
// 오름차순 정렬 & 중복 체크 메소드 호출부
deplicate(data);
sort(data);
// 한 게임이 끝나면 그 결과를 출력한다.
result(i,data);
}
}
// 로또 결과를 출력하는 메소드
void result(int i,int data[]){
System.out.print("\ngame "+i+" ? ");
for(int j=0;j<data.length;j++){
System.out.print(data[j]+"\t");
}
}
// 계속 수행여부를 결정하는 메소드
void select() throws Exception{
process();
System.out.print("\nSelect count(y/n)?");
int yn=System.in.read();
System.in.read();
if(yn=='y') select();
}
// 중복숫자를 해결하는 메소드
void deplicate(int[]data){
int temp;
for(int i=0;i<data.length-1;i++){
for(int j=i+1;j<data.length;j++){
if(data[i]==data[j]){
data[j]=lotto();
deplicate(data);
}
}
}
}
// 오름차순으로 정렬하는 메소드
void sort(int[]data){
int temp;
for(int i=0;i<data.length-1;i++){
for(int j=i+1;j<data.length;j++){
if(data[i]>data[j]){
temp=data[i];
data[i]=data[j];
data[j]=temp;
}
}
}
}
public static void main(String[]args)throws Exception{
LottoGame lotto=new LottoGame();
lotto.select();
}
}