2007년 12월 12일
로또생성기 java로 만들어보기
javaservice.net에서 보고 저도 한번 짜봤어요.
문제
- 1부터 45까지의 숫자 중에 6개를 뽑는다.6개의 값이 다 달라야 한다.
- java.util.Random를 이용해서 임의의 값을 구한다.
- 출력시 작은 숫자부터 순서대로 출력
저의 풀이
간단하게 짠다면 일단 저는 아래와 같이 해보고 싶어요. (generics와 auto-boxing을 활용했으니 java5)
import java.util.Random;
import java.util.SortedSet;
import java.util.TreeSet;
public class LottoMachine1 {
public static void main(String[] args) {
SortedSet<Integer> pickedNumbers = new TreeSet<Integer>();
Random random = new Random();
while(pickedNumbers.size()< 6) pickedNumbers.add(random.nextInt(45)+1);
System.out.println(pickedNumbers);
}
}
그리고 아마 프로젝트에서 짠다면, 알아보기 쉽게 하기 위해서 아래와 같이 바꾸었을 것 같아요.
import java.util.Random;
import java.util.SortedSet;
import java.util.TreeSet;public class LottoMachine {
private int maxNumber;
private int pickedNumbersCount;
private Random random = new Random();
public LottoMachine(int maxNumber, int pickedNumbersCount){
this.maxNumber = maxNumber;
this.pickedNumbersCount = pickedNumbersCount;
}public void pick() {
SortedSet<Integer> pickedNumbers = new TreeSet<Integer>();
while(pickedNumbers.size() < pickedNumbersCount ){
int pickedNumber = random.nextInt(maxNumber)+1;
pickedNumbers.add(pickedNumber);
}
System.out.println(pickedNumbers);
}
public static void main(String[] args) {
LottoMachine machine = new LottoMachine(45,6);
machine.pick();
machine.pick();
}
}
짧은 코드보다는 알아보기 좋은 코드를 짜고 싶다는 말을 할려고 고쳐봤는데..글쎄요; 바뀐 코드가 더 눈에 잘 들어온다는 확신이 들지는 않네요 ^^;
# by | 2007/12/12 17:07 | 코드,그냥 재미로 | 트랙백 | 핑백(1) | 덧글(2)




☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
... 바로 아래 포스팅에서 간단한 로또생성기 코드를 만들어봤었죠. (http://benelog.egloos.com/1642193). 같은 문제에 대한 dak99님의 풀이(http://dak99.egloos.com/3529054)를 보고 다시 다른 버전을 만들어봤어요. ... more