JAVA 공부

로또문제

사탕맛사과 2023. 5. 10. 01:41

▶로또 문제 풀기 전에 난수를 출력해보자

package com.simple.lotto;

public class Lotto {
	final byte LOTTO_NUMBER = 6;
	private byte[] numbers = null;
	
	public Lotto() {
		numbers = new byte[LOTTO_NUMBER];
	}
	
	// 로또번호 만들기 (6개의 번호)
	public void makeNumbers(){
		// 난수를 이용하여 로또번호를 추출
		System.out.println("로또번호 생성 준비중");
		
	}
}
package com.simple.lotto;

public class LottoTest {
	public static void main(String[] args) {
		// 로또 객체 생성
		Lotto lotto = new Lotto();
		Lotto lotto1 = new Lotto();
		Lotto lotto2;
		
		lotto2 = lotto1;
		lotto2.makeNumbers();
		
		// Lotto에 toString()이 없는데 쓸수 있는 이유는
		// 상위 폴더에서 toString()이 있기 때문에 상속받아서 사용 o
		System.out.println(lotto.toString());
		System.out.println(lotto.hashCode());
		System.out.println(lotto1.hashCode());
		System.out.println(lotto2.hashCode());
		
		lotto.makeNumbers();
	}
}

-콘솔 창

로또번호 생성 준비중
com.simple.lotto.Lotto@2133c8f8			// 패키지.클래스@주소
557041912
1134712904
1134712904
로또번호 생성 준비중

=============================

▶ 문제

-로또 번호 출력 문제 (난수를 이용하여 작성하시오)
-돈을 받고 돈에 맞는 로또 번호를 출력하는 프로그램을 작성하시오
-상속을 이용해보자
 
>출력
돈을 입력 하세요: 5000
로또 금액 5000원
3,6,12,45,9,10
7,8,11,25,32,44
9,8,14,16,20,30
20,21,31,33,36,41
1,9,5,11,16,18

 

 

package com.simple.lotto;

public class Lotto {
	final byte LOTTO_NUMBER=6;
	final byte MAX=45;
	final byte MIN=1;
	private byte[] numbers = null;
	
	public Lotto() {
		numbers = new byte[LOTTO_NUMBER];
	}
	
	// 로또번호 만들기 (6개의 번호)
	public void makeNumbers(){
		byte n =0;
		
		// 난수를 이용하여 로또번호를 추출
		for(int i=0; i<LOTTO_NUMBER; i++) {
			// 중복을 제외한 6개의 로또번호 추출
			// 방법1
			do {
				
				n = (byte)(Math.random()*(MAX-MIN+1)+MIN);
				
			} while(exist(n));	// 중복체크 메서드
			
			// 방법2
//			do {
//				
//				n = (byte)(Math.random()*(MAX-MIN+1)+MIN);
//				check = exist(n);
//				
//			} while(check);	// 중복체크 메서드

			numbers[i] = n;
			System.out.print(n + " ");
		}
	}
	
	private boolean exist(byte n) {
		boolean check=false;	// 중복이 없는 것을 기준
		
		for(byte t:numbers) {	// 배열에 있는 것을 꺼내서 t애 순서대로 저장
			if(t==n) {
				check=true;
				break;
			}
		}
		
		return check;
	}
	
}
package com.simple.lotto;

import java.util.Scanner;

public class LottoTest {
	public static void main(String[] args) {
		// 로또 객체 생성
		Lotto lotto = new Lotto();
		
		Scanner sc = new Scanner(System.in);
		System.out.print("로또 금액: ");
		int money = sc.nextInt();
		System.out.println("로또 금액 " + money + "원");
		
		for(int i=0; i<(money/1000); i++) {
			lotto.makeNumbers();
			System.out.println();
		}
		
		sc.close();
	}
}

-콘솔 창

로또 금액: 5000
로또 금액 5000원
31 29 8 33 37 16 
45 21 4 1 27 31 
41 18 45 40 19 27 
15 30 43 32 44 36 
20 14 9 17 5 8

=============================

▶ 문제

-로또 문제에서 로또번호 최솟값과 최대값을 출력해보자

 

 

package com.simple.lotto;

public class Lotto {
	final byte LOTTO_NUMBER=6;
	final byte MAX=45;
	final byte MIN=1;
	private byte[] numbers = null;
	
	public Lotto() {
		numbers = new byte[LOTTO_NUMBER];
	}
	
	// 로또번호 만들기 (6개의 번호)
	public void makeNumbers(){
		byte n = 0;
		
		// 난수를 이용하여 로또번호를 추출
		for(int i=0; i<LOTTO_NUMBER; i++) {
			// 중복을 제외한 6개의 로또번호 추출
			do {
				
				n = (byte)(Math.random()*(MAX-MIN+1)+MIN);
				
			} while(exist(n));	// 중복체크 메서드
			
			numbers[i] = n;
			System.out.print(n + " ");
		}
	}
	
	private boolean exist(byte n) {
		boolean check=false;	// 중복이 없는 것을 기준
		
		for(byte t:numbers) {	// 배열에 있는 것을 꺼내서 t애 순서대로 저장
			if(t==n) {
				check=true;
				break;
			}
		}
		
		return check;
	}
	
	// 배열에서 최솟값
	public byte getMinNumber() {
		byte num=0;
		int i=0;
		num=numbers[i];
		for(i=0; i<numbers.length; i++) {
			if(num>numbers[i]) {
				num=numbers[i];
			}
		}
		
		return num;
	}
	
	// 배열에서 최댓값
	public byte getMaxNumber() {
		byte num=0;
		int i=0;
		num=numbers[i];
		for(i=0; i<numbers.length; i++) {
			if(num<numbers[i]) {
				num=numbers[i];
			}
		}
		
		return num;
	}
}
package com.simple.lotto;

import java.util.Scanner;

public class LottoTest {
	public static void main(String[] args) {
		// 로또 객체 생성
		Lotto lotto = new Lotto();
		
		Scanner sc = new Scanner(System.in);
		System.out.print("로또 금액: ");
		int money = sc.nextInt();
		System.out.println("로또 금액 " + money + "원");
		
		for(int i=0; i<(money/1000); i++) {
			lotto.makeNumbers();
			System.out.print(" 최솟값: " + lotto.getMinNumber());
			System.out.print(" 최대값: " + lotto.getMaxNumber());
			System.out.println();
		}
			
		sc.close();
	}
}

-콘솔 창

로또 금액: 5000
로또 금액 5000원
8 15 24 7 33 23  최솟값: 7 최대값: 33
42 4 29 3 32 11  최솟값: 3 최대값: 42
30 16 23 21 26 25  최솟값: 16 최대값: 30
27 38 14 44 43 21  최솟값: 14 최대값: 44
15 7 26 45 10 27  최솟값: 7 최대값: 45

=============================

▶ 문제

-로또 문제에서 로또번호를 순서대로 출력해보자

 

'JAVA 공부' 카테고리의 다른 글

JAVA 참고 사이트  (0) 2023.05.10
자바 윈도우로 색상바 조절하기  (0) 2023.05.10
사칙연산  (0) 2023.05.10
극장좌석 예약하기  (0) 2023.05.10
자바 윈도우 프로그래밍  (0) 2023.05.10