지금까지 배운 과정으로 로또를 만들어보자
Math.random()
으로 생성된 난수를 배열에 담기private int[] lottoArr;
private static boolean bo;
private Scanner sc = new Scanner(System.in);
public Lotto() { // 생성자 함수
this.lottoArr = new int[6];
}
우선 로또를 담을 배열과 입력을 받을 Scanner를 인스턴스 변수로 선언해둔다
private int[] getLotto() { // 로또 랜덤숫자 넣기
for (int i = 0; i < 6; i++) {
lottoArr[i] = (int) (Math.random() * 45 + 1);
for (int j = 0; j < i; j++) { // 중복 숫자 제거
if (lottoArr[i] == lottoArr[j]) {
i--;
break;
}
}
}
return lottoArr;
}
로또를 생성하는 함수니까 정수 배열로 리턴을 받도록 한다
생성된 로또배열의 i값과 j값이 같다면 해당 for문을 탈출하여 다시 반복하는 기능이다
private int[] sortLotto(int[] lottoArr) { // 로또 정렬하기
int temp;
for (int i = 0; i < lottoArr.length; i++) {
for (int j = 0; j < i; j++) {
if (lottoArr[i] < lottoArr[j]) {
temp = lottoArr[i];
lottoArr[i] = lottoArr[j];
lottoArr[j] = temp;
}
}
}
return lottoArr;
}
정렬한 로또 역시 리턴하도록 정수 배열 타입을 선언한다
정렬을 위해선 자리를 바꿀 공간이 있어야 하므로 temp
라는 빈 상자를 준비한다
i가 j보다 작을 때 i와 j의 값을 temp
를 이용해 서로 자리를 바꾸는 버블 정렬이다
private void printLotto() { // 로또 출력하기
for (int i = 0; i < lottoArr.length; i++) {
System.out.print(lottoArr[i] + " ");
}
System.out.println();
}
반환받았던 로또 배열을 하나하나 출력하는 간단한 함수다
private double averageLotto() { // 로또 평균구하기
DecimalFormat form = new DecimalFormat("#.##");
double sum = 0;
double average = 0;
for (int num : lottoArr) {
sum += num;
}
average = sum / lottoArr.length;
System.out.println("평균 : " + form.format(average));
return average;
}
DecimalFormat
는 숫자의 format을 바꾸게 도와주는 클래스다
평균값이 너무 길지 않도록 소숫점 아래 두 자리까지만 찍게 설정했다
지금보면 간단하지만 할 때는 너무 힘들었다
지금까지 배운 것들을 모두 응용해서 만들어야 했는 데 막히는 것은 검색의 도움을 받았다
클래스를 이용하여 각 컴포넌트를 만들어 조합하는 것이 재밌는 작업이었다