티스토리 뷰

 오늘은 Java의 Random 함수를 이용한 lotto 번호 생성기를 만들어 보도록 하겠습니다.

 

기본적인 세팅은 되어있는 것으로 간주하고 코딩 해보도록 하겠습니다.

 

//랜덤함수 시작 - 무엇인가를 시작하기 전에 주석 달아주는 습관을 기르시면 추후 긴~ 코드 작성시 찾기 편해집니다.

 

int[] random = new int[6];    

//int형 배열 random을 생성해주고 생성된 번호 6개가 들어갈 공간을 만들어줍니다.

 

for(int i = 0; i < random.length; i++){    

//for문을 이용해서 숫자 6개가 생성되도록 해줍니다.

 

random[i] = (int)(Math.random() * 45 + 1);    

//만들어둔 random방에 java에서 지원하는 Math.random() 함수를 이용해 숫자를 생성해줍니다.

//* 45는 45개의 숫자(0~44)를 이용하라는 것이고 +1 해주는 것은 1~45숫자를 받아오기 위함입니다.

//random()함수 값은 double형 이기때문에 (int)형으로 변환해줍니다.

 

for(int j = 0; j < i; j++){    

//중복 검사를 하는 for을 작성합니다.

 

if(random[i] == random[j]){

//if문을 통해 이미 생성된 값이 이번에 생성하는 값과 같으면 밑에 코딩을 수행합니다.

 

i--;

//방번호를 줄여줍니다. 이유는 다른 번호를 새로 생성하기 위해서 입니다.

 

break;

//if문을 빠져나갑니다.

 

}

//기존 생성된 숫자와 이번에 생성한 숫자의 if문을 마칩니다.

 

}

//중복 검사를 하는 for문을 마칩니다.

 

}

//6개의 숫자를 생성하는 for문을 마칩니다.

 

자 이제 콘솔 화면에 찍어보도록 하겠습니다.

찍으면서 저는 또 하나의 작업을 해보도록 하겠습니다. 추후 콘솔을 제외한 다른 화면에 뿌려주기 위해서 map에 담아보도록 하겠습니다.(저는 웹에 뿌려주기 위해 작업했습니다.)

 

Map<String, Integer> randomMap = new LinkedHashMap<String, Integer>();

//randomMap 이름의 map을 생성하는데 LinkedHashMap으로 만들겠습니다.

//이유는 map은 들어가는 순서가 지맘대로라 원하는 순서대로 출력하기 위해서 사용했습니다.

 

for(int i = 0; i < random.length; i++){

//6개의 값을 찍어주기 위해 random 값의 개수만큼 for문을 돌려줍니다.

 

System.out.println((i+1) + "번째 : " + random[i]);

//생성된 숫서대로 콘솔 화면에 찍어줍니다.

 

randomMap.put((i+1) + "번째", random[i]);

//randomMap에 넣어주기 위해 put함수를 사용합니다. key 값과 value값을 각각 넣어줍니다.

 

}

//6개의 값을 찍어주고 map에 담았으면 for문을 마칩니다.

 

System.out,println("일반 랜덤 함수 끝 -> 이제부터 Map 출력");

//map에 잘 담겼나 확인하기 위해 영역을 나눠줍니다. 이제 map에 담긴 값들을 출력해 보겠습니다.

 

Set<String> keySet = randomMap.keySet();

//randomMap에 담긴 값들의 모든 key를 받아올 Set 객체 keySet을 선언하고 담아옵니다. 

 

Iterator<String> iterator = keySet.iterator();

//담아온 keySet을 iterator()를 이용해서 Interface iterator에 넣어줍니다.

//어떤 행위를 하는지는 알겠는데 어렵네요.

 

while(iterator.hasNext()){

//while문을 통해 iterator에 다음값이 있으면 아래 소스를 실행합니다.

 

String key = iterator.next();

//iterator에 들어있는 키값들을 String형 key에 넣어줍니다.

 

Integer value = randomMap.get(key);

//key값에 맞는 map에 담긴 값들을 찾아와 Integer형 value에 넣어줍니다.

 

System.out.println(key + " : " + value);

//key 값과 그에 맞는 value 값을 출력합니다.

 

}

//다 찍었으면 while문을 마칩니다.

 

//랜덤함수 끝

 

콘솔화면과 코딩 스크린샷 입니다.

 

 

 

재미로 시작한 lotto 번호 생성기인데 다양한 메소드를 사용하게 되었네요.

추후에는 받아온 map값을 웹상에 뿌려주는 페이지도 만들어 보도록 하겠습니다.

 

개발공부는 멀고도 험합니다....^^; 화이팅!

 

댓글