336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Lotto.java 소스
package com.tapito;
import java.util.*;
/**
* 자동 번호 생성 클래스입니다.
* @author tapito
*
*/
public final class Lotto
{
private Random random;
private byte[] numbers = null;
private byte bonus = 0;
/**
* Lotto 클래스 형식 인스턴스를 초기화합니다.
*/
public Lotto()
{
this.numbers = new byte[6];
this.bonus = 0;
this.random = new Random();
this.makeNumbers();
}
/**
* 생성된 숫자를 오름차순 정렬합니다.
*/
private void sortNumbers()
{
byte t = 0;
for(int i = 0; i < this.numbers.length - 1; i++)
{
for(int j = i + 1; j < this.numbers.length; j++)
{
if(this.numbers[i] > this.numbers[j])
{
t = this.numbers[i];
this.numbers[i] = this.numbers[j];
this.numbers[j] = t;
}
}
}
}
/**
* 자동 숫자를 생성하여 클래스를 갱신합니다.
*/
public void makeNumbers()
{
byte n = 0;
for(int i = 0; i < 6; i++)
{
do
{
n = (byte)(this.random.nextInt(44) + 1); // 0부터 44까지 임의의 수 생성 후 1 더한다.
} while(this.exists(n)); // 중복되는 숫자라면 다시 생성
this.numbers[i] = n;
}
this.sortNumbers();
do
{
n = (byte)(this.random.nextInt(44) + 1);
} while(this.exists(n));
this.bonus = n; // 보너스 숫자.
}
/**
* 지정된 숫자의 존재 여부를 검사하여 중복 숫자를 방지합니다.
* @param n 검사할 숫자입니다.
* @return n이 존재하면 true, 그렇지 않으면 false를 반환합니다.
*/
public boolean exists(byte n)
{
boolean ret = false;
for(byte t : this.numbers)
{
if(t == n)
{
ret = true; break;
}
}
return ret;
}
/**
* n번째 숫자를 가져옵니다.
* @param n 가져올 숫자입니다. 1부터 6까지로 제한되며 보너스 숫자는 7입니다.
* @return n번째에 해당되는 숫자입니다.
* @throws Exception n이 범위를 초과하면 예외를 throw합니다.
*/
public byte getNumber(int n) throws Exception
{
byte ret = 0;
if(n > 7) throw new IndexOutOfBoundsException();
if(n < 1) throw new IndexOutOfBoundsException();
if((1 <= n) && (n <= 6))
return this.numbers[n - 1];
else
return this.bonus;
}
}
Program.java 소스
/********************************
* 로또 번호 생성 프로그램 *
* Program.java *
* main 메서드를 정의한다. *
* (c) tapito 2012 *
********************************/
package com.tapito;
public class Program
{
public static void main(String[] args) throws Exception
{
Lotto lotto = new Lotto();
int getc;
System.out.println("Tapito(R) Lotto Generator");
System.out.println("(c) tapito : http://tapito.tistory.com/");
do
{
lotto.makeNumbers();
System.out.println();
System.out.printf("%2d, %2d, %2d, %2d, %2d, %2d ...... %2d\n",
lotto.getNumber(1),
lotto.getNumber(2),
lotto.getNumber(3),
lotto.getNumber(4),
lotto.getNumber(5),
lotto.getNumber(6),
lotto.getNumber(7));
do
{
System.out.print("반복 = y, 종료 = n >> ");
getc = System.in.read();
System.in.read(); System.in.read();
} while(!((getc == (int)'y') || (getc == (int)'n') || (getc == (int)'Y') || (getc == (int)'N')));
} while(getc != (int)'n');
System.out.println();
System.out.println("Bye~");
System.out.println("- by tapito");
return;
}
}
TapitoLotto.java JAR 파일
실행 결과
'자작 프로그램' 카테고리의 다른 글
| Objective-C로 작성해 본 복소수 클래스 (3) | 2012.09.25 |
|---|---|
| 자바로 구현한 만년달력 프로그램 (8) | 2012.02.14 |
| 완전 심플 메모장 프로그램 (옴니아 Windows CE용) (0) | 2011.10.09 |
| 숫자 출력 시리즈 1편 - 무지개 피라미드 (0) | 2011.10.09 |
| C++로 구현해 본 간단 스택 (0) | 2011.07.19 |
TapitoLotto.jar