로또 번호 생성기


/* 배열 응용 */
/* 로또 번호 생성기 */
/* 직접 시도한 경우 */
/* 뻘짓이 심함 */
package lambda;

public class Lambda {
	public static void main(String[] args) {
		new Main();
	}
}

/* 메인 코드 영역 */
class Main {
	private int[] lotto;

	Main() {
		this.lotto = new int[6];
		this.main();
	}

	/* 핵심 코드 영역 */
	private void main() {
		System.out.println(this.getTitle());
		// 엔터 입력
		try {
			System.in.read();
		} catch (Exception e) {
		}
		System.out.println(this.getLotto());
	}

	// 타이틀 반환
	private String getTitle() {
		StringBuilder sb = new StringBuilder();
		sb.append("***로또번호 생성기***\n");
		sb.append("시작하려면 Enter");
		return sb.toString();
	}

	// 로또 번호 반환
	private String getLotto() {
		StringBuilder sb = new StringBuilder();
		int[] counts = new int[6];

		while (true) {
			for (int i = 0; i < 6; i++) { // 로또 숫자 초기값
				this.lotto[i] = (int) (Math.random() * 45) + 1; // 1 ~ 45 의 랜덤 숫자
			}

			for (int i = 0; i < 6; i++) { // 숫자 6개를...
				int count = 0;
				for (int j = 0; j < 6; j++) { // 6번 비교
					if (this.lotto[i] == this.lotto[j]) {
						if (count == 2) // 자기 자신과도 비교하기 때문에 2번째부터 확정 중복
							break;
						count++;
					}
				}
				if (count == 1) { // 자기 자신과만 중복
					counts[i] = count; // 숫자별 중복체크 결과값 저장
				}
			}
			if (counts[5] == 1) // 마지막 숫자의 중복체크 결과값이 1이면 while 문 종료
				break;
		}

		for (int i = 0; i < 6; i++) { // 결과값 마지막 숫자 제외 공백 추가해서 출력
			sb.append((i != this.lotto.length - 1) ? this.lotto[i] + " " : this.lotto[i]);
		}
		return sb.toString();
	}
}

댓글

이 블로그의 인기 게시물

substring 예제: 문자열을 입력 받아 한 글자씩 회전시켜 모두 출력하는 프로그램을 작성하라

단체 채팅 구현