도라에몽주머니

[Java/Eclipse] Java 24, 25일차 본문

Study/Java

[Java/Eclipse] Java 24, 25일차

에몽쓰 2022. 10. 20. 16:52

Java

 

예제

Lotto 번호를 자동으로 생성하는 프로그램을 작성하시오.

/* Lotto.java */
import java.util.Random;
import java.util.Scanner;

// 6/45 : 1 ~ 45 사이의 숫자 6개 사용
// Random : 임의의 데이터를 생성하는 클래스
public class Lotto {
	int[] m; // 로또번호 6개 저장 (1세트)
	int buyNum; // 구매횟수 저장
	
	public Lotto() {
		m = new int[6];
	}
	
	// 입력 : 구매횟수
	public void inputBuyNum() {
		Scanner sc = new Scanner(System.in);
		
		System.out.print("구매횟수를 입력하세요 : ");
		buyNum = sc.nextInt();
		System.out.println(); // 1줄 넘김
	}
	
	// 로또번호 1세트 생성
	// 1~45 사이의 숫자 6개
	// 각 번호가 중복되면 안됨
	public void selectLotto() {
		Random random = new Random();
		boolean chk = false; // 번호 중복 상태 저장. true : 번호가 중복됨
	
		// 첫번째 번호 생성
		// random.nextInt(45) : 0 ~ 44 사이의 정수 1개 생성
		m[0] = random.nextInt(45) + 1;

		// 나머지 5개 숫자 생성
		// 생성된 숫자가 기존의 숫자와 중복되는지 검사
		for(int a=1; a<6;) {
			m[a] = random.nextInt(45) + 1;
			chk = false;
			// 중복 검사
			for(int b=0; b<a; b++) {
				if(m[a] == m[b]) {
					chk = true;
					break;
				}
			}
			if(!chk) a++;
		}
	}
	
	// 로또번호 1세트 오름차순 정렬
	public void sort() {
		for(int a=0; a<=5; a++) {
			for(int b=a+1; b<6; b++) {
				if(m[a] > m[b]) {
					// 데이터 위치 바꾸기
					int temp = m[a];
					m[a] = m[b];
					m[b] = temp;
				}
			}
		}
	}
	
	
	// 로또번호 1세트 출력
	public void outputResult() {
		for(int i=0; i<m.length; i++) {
			System.out.printf("%2d ", m[i]);
		}
		System.out.println();
	}
	
	// 구매횟수만큼 반복
	public void doLotto() {
		inputBuyNum();
		for(int i=0; i<buyNum; i++) {
			selectLotto();
			sort();
			outputResult();
		}
	}
}

 

static

: 변수나 메소드에 사용되는 키워드로서, 인스턴스(객체)를 선언하지 않고 클래스를 사용할 수 있게 해줌. (new 키워드를 통해 객체를 선언할 필요 X)

* 단, 프로그램 내에서 공통으로 값을 유지하고 싶을 경우에만 사용해아 함. (참고 : https://ifcontinue.tistory.com/2)

 

package

: 비슷한 성격의 자바 클래스들을 모아둔 디렉토리.

 

 

toString 메소드

: 객체가 가지고 있는 정보나 값들을 문자열로 만들어서 리턴하는 메소드. 주로 toString 메소드의 값을 새로운 클래스로 오버라이드해서 의미있는 값으로 사용한다.

'Study > Java' 카테고리의 다른 글

[Java/Eclipse] Java 27일차  (0) 2022.10.24
[Java/Eclipse] Java 26일차  (0) 2022.10.21
[Java/Eclipse] Java 23일차  (0) 2022.10.18
[Java/Eclipse] Java 22일차  (0) 2022.10.17
[Java/Eclipse] Java 19 - 21일차  (0) 2022.10.17