JAVA
Test148.java / 자바의 주요(중요) 클래스 / Random 클래스 - 로또 생성기
universedevelope
2022. 10. 25. 22:37
/* =======================================
■■■ 자바의 주요(중요) 클래스 ■■■
======================================== */
// Random 클래스
/*
○ java.util.Random 클래스는
여러 형태의 난수를 발생시켜 제공하는 클래스이다.
Math 클래스의 정적 메소드인 random() 메소드도
난수를 제공하는 메소드지만
0.0 ~ 1.0 사이의 실수 형태만 발생하게 되므로
필요한 여러 형태의 난수를 만들어내기 위해서는
추가적인 연산을 수행해야 한다.
그래서 자바는 여러 형태의 난수를 발생시켜주는
전용 클래스인 Random 클래스를 별도로 제공하고 있다.
-- 기술면접에서 많이나오는게 오버로딩 오버라이딩
-- 코딩테스트 : 로또 번호 생성기(단골)
*/
// 로또 번호 생성기(난수 발생 프로그램)
// 프로그램이 실행되면 기본적으로 로또를
// 5게임 수행하는 프로그램을 구현한다.
// 실행 예)
// 3 5 12 24 31 41
// 1 2 8 49 2 9
// 5 6 4 23 5 7
// 10 22 33 42 9 3
// 59 32 22 11 2 1
// 계속하려면 아무 키나 누르세요...
import java.util.Random;
import java.util.Arrays; // java util의 Arrays 클래스 참조
class Lotto
{
// 배열 변수 선언 및 메모리 할당 → 로또 번호를 담아둘 배열방 6칸
private int[] num;
Lotto ()
{
num = new int[6];
}
// getter
public int[] getNum()
{
return num;
}
public void start()
{
Random rd = new Random();
int n;
int cnt = 0;
jump:
while(cnt<6) // 0 1 2 3 4 5
{
n = rd.nextInt(45)+1; // 1 ~ 45 가정 : 10 / 10(나오면 jump로돌아가서 10아닌수 나올때까지 강제반복)
for (int i = 0;i < cnt ;i++ )
{
if (num[i]==n)
{
continue jump;
}
}
num[cnt++] = n; // num[0] num[1] num[2] num[3] num[4] num[5]
}
sorting();
}
// 정렬 메소드 정의
private void sorting()
{
Arrays.sort(num);
}
}
public class Test148
{
public static void main(String[] args)
{
Lotto lotto = new Lotto();
for (int i =1 ;i<=5 ;i++ )
{
// 로또게임 수행
lotto.start();
for (int n : lotto.getNum() )
{
System.out.printf("%4d", n);
}
System.out.println();
}
}
}
728x90