초급과정/java

[Java] 10일차_로또 메소드

whalerice 2023. 10. 18. 20:14
import java.util.Arrays;

public class LottoMethod {
	
	public static void main(String[] args) {
		LottoMethod lm = new LottoMethod();
//		System.out.println(lm.generateLotto());
//		int[] lotto = lm.generateLotto();	
//		System.out.println(Arrays.toString(lotto));
//		int[][] paper = lm.lottoPaper();
//		for(int i=0; i<paper.length; i++) {
////			System.out.println(Arrays.toString(paper[i]));
//			lm.printArray(paper[i]);
//		}
		//출력할때는 반대로.. 번들->페이퍼->로또한줄 순으로 
		//20000원으로 로또 몇장을 살 수 있는지 구현.
		int[][][] bundle = lm.lottoBundle(6000);
		for(int i =0; i<bundle.length;i++) {
			int[][] paper = bundle[i];
			for(int j=0; j<paper.length; j++) {
				int[]lotto = paper[j];
				System.out.println(Arrays.toString(lotto));
			}
			System.out.println("-----------------------");
		}
	}
	
	public void printArray(int[] arr) {				//배열 출력하기
		System.out.print("[");
		for(int i=0; i<arr.length; i++) {
			if(arr.length-1 == i) {
				System.out.print(arr[i]+"]");
			}else {
				System.out.print(arr[i]+", ");
			}
		}
		System.out.println();
	}
	
	public int[][][] lottoBundle(int money) {
		/*
		 * 1000원 단위
		 */
		int papers = money/1000/5;
		if(money/1000%5 !=0) papers++;	//money/1000=로또 라인수,나머지가 있을시 한장더
		int[][][] bundle = new int[papers][5][6];
		
		for(int i=0; i<bundle.length; i++) {
			bundle[i] = lottoPaper();	
		}
		//마지막 장에 나머지 만큼만 추가한다, 기존엔 3000원 넣었을때 나오지 않았었음
		if(money/1000%5 !=0) {	
			bundle[papers-1] = lottoPaper(money/1000%5); 
			
		}
		
		return bundle;
	}
	
	public int[][] lottoPaper(int n) {			//6개씩 한줄씩 출력
		
		int[][] paper = new int[n][6];
		
		for(int line =0; line<paper.length; line++) {
			int[] lotto = generateLotto();
			paper[line] = lotto;
		}
		for(int line =0; line<5; line++) {
		}
		
		return paper;
	}
	
	public int[][] lottoPaper() {
		
		// 기본적으로 5줄의 로또를 생성하는 메소드 
        // lottoPaper (int n) 을 오버로딩 하여 호출함.
		return lottoPaper(5);
		
	}
	
	public int[] generateLotto() {
		int[] lotto = new int[6];
		
		// 로또 값 저장 포문
		for (int i = 0; i < lotto.length; i++) {
			int ran = (int)(Math.random()*45)+1;
			// 배열 값 저장
			lotto[i] = ran;
			// 비교 포문
			for (int j = 0; j < i; j++) {
				/*
				 * 저장된 로또 값과 비교 후 
				 * 저장 된 값이 있다면 i 다시 반복
				 */
				if(lotto[i] == lotto[j]) {
					i--;
					break;
					
				}
			}
			
		}
		Arrays.sort(lotto);		//버블정렬 안쓰는 이유 원래 정렬해주는 메소드가 있음. 
//		SortMethod sort = new SortMethod();
//		int[] result = sort.sort2(lotto);
//		System.out.println(Arrays.toString(result));
//		lotto = sort(lotto);
		
		return lotto;
		
	}	
	public int[] sort(int[] arr) {
		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = 0; j < arr.length - 1; j++) {
				if (arr[j] > arr[j + 1]) {
					int temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
			}
		}
		return arr;
	}
}