[Toy] 로또

로또 만들기👨‍💻

지금까지 배운 과정으로 로또를 만들어보자

  1. Math.random()으로 생성된 난수를 배열에 담기
  2. 중복된 숫자가 나오지 않게 처리하기
  3. 숫자를 오름차순으로 정렬하기

변수 선언

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을 바꾸게 도와주는 클래스다
평균값이 너무 길지 않도록 소숫점 아래 두 자리까지만 찍게 설정했다

후기✨

지금보면 간단하지만 할 때는 너무 힘들었다
지금까지 배운 것들을 모두 응용해서 만들어야 했는 데 막히는 것은 검색의 도움을 받았다
클래스를 이용하여 각 컴포넌트를 만들어 조합하는 것이 재밌는 작업이었다

좋은 웹페이지 즐겨찾기