본문 바로가기

국비과정/JAVA

20230614 _[9일차]_04. 로또번호추첨_(여러개의 클래스)

[ 로또번호추첨 ] _ 여러개의 클래스 이용해서

 

public class Calc

> public main 메서드  -> (Lotto의 모든 메서드)실행

 

class Lotto

> public choose 메서드 (void) -> 번호추첨

> public sort 메서드 (void) -> 번호정렬

> public print 메서드 (void) -> 반복출력

 

package calc;

import java.util.Arrays;

public class Calc {
	
	public static void main(String[] args) {
		
		// 로또 객체 생성
		Lotto lotto = new Lotto();
		int[] number = lotto.choose();	// 가져오는 값인 배열로 타입 맞춰줘야함
		
//		lotto.print(number);	// print 메서드 실행
		number = lotto.sort(number);	// 정렬된 배열로 다시 저장
		lotto.print(number);		// 정렬된 배열 프린트
//		lotto.print(lotto.choose());	// 정렬된 배열 프린트2
	}

}

class Lotto{
	
	// 로또 번호 뽑는 메소드
	public int[] choose() {
		int[] lottoNum = new int[6];
		
		// 번호 뽑는 작업은 여기서..
		for (int i = 0; i < lottoNum.length; i++) {
			lottoNum[i] = (int) (Math.random() * 45) + 1;
			for (int j = 0; j < i; j++) {
				if(lottoNum[i] == lottoNum[j]) {
					i--;
				}
			}
		}
		return lottoNum;	// return new int[6] => int타입의 6칸짜리 배열 출력
	}
	
	public int[] sort(int[] number) {	// 매개변수가 배열, 타입 맞춰주기
		Arrays.sort(number);
		return number;
	}
	
	
	public void print(int[] number) {		// 매개변수가 배열, 타입 맞춰주기
		for (int i = 0; i < number.length; i++) {
			System.out.print(number[i]);
			System.out.print(", ");
		}
	}

}

main 메소드에서 실행만 시키려면,

** lottoNum 배열을 인스턴스 변수로 선언  => 해당 클래스 내의 모든 메소드에서 사용가능.

 

따라서 다른 메소드들은 void로 지정 가능(반환타입지정x), 매개변수 사용할 필요도x (lottoNum 바로사용)

 

* number = lotto.sort(number);

> main메소드 내부에 먼저 쓰고 밑줄 클릭하면 Lotto 클래스 안에 sort() 메소드 자동생성

 

 

package calc;

import java.util.Arrays;

public class Calc {
	
	public static void main(String[] args) {
		
		// 로또 객체 생성
		Lotto lotto = new Lotto();
		lotto.choose();	// 추첨 및 중복제서
		lotto.sort();	// 정렬
		lotto.print();	// 프린트
		
        // 메인 메서드에서는 실행만!!!
	}

}

class Lotto{
	
	int[] lottoNum = new int[6]; 	// 필드(인스턴스 변수)
	public int[] choose() {
		
		for (int i = 0; i < lottoNum.length; i++) {
			int temp = (int) (Math.random() * 45) + 1;
			boolean ch = true;
			for (int j = 0; j < i; j++) {
				if(temp == lottoNum[j]) {
					ch = false;
					break;
				}
			}
			if(ch) {
				lottoNum[i] = temp;
			} else {
				i--;
			}
		}
		return lottoNum;	// return new int[6] => int타입의 6칸짜리 배열 출력
	}
	
	public void sort() {
		Arrays.sort(lottoNum);
	}
	
	
	public void print() {
		for (int i = 0; i < lottoNum.length; i++) {
			System.out.print(lottoNum[i]);
			System.out.print(", ");
		}
	}

}

 


// sort 정렬

int arr[] = new int[] {2, 1, 8, 7, 3};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr)); // [1, 2, 3, 7, 8]