본문 바로가기
Java

java 로또번호 출력하기.

by Daisy :) 2020. 12. 29.
반응형
package _1229;

import java.util.Arrays;
import java.util.Random;

public class Lotto {

	void printVer1() {
		// ver1
		// 1. 로또숫자 갯수는 6개 .
		int lottoNum[] = new int[6];
		// 2. 로또 숫자 범위 1~45
		int min = 1;
		int max = 45;
		// 3. 숫자는 랜덤
		Random rand = new Random();
		// 4. 랜덤숫자 추출
		for (int i = 0; i < lottoNum.length; i++) {
			// nextInt(45) 이면 해당 범위가 0 ~ 44 이므로
			// 내가 실제 구하고 싶은건 1 ~ 45 이기 때문에 마지막에 츼소값인 min을 더해주면 된다!★여기는 이해가 잘 안감.
			lottoNum[i] = (rand.nextInt((max - min) + 1) + min);

			// 5. 중복제거
			for (int j = 0; j < i; j++) {
				if (lottoNum[i] == lottoNum[j]) {
					i--;
				}
				// 6. 오름차순
				if (lottoNum[i] < lottoNum[j]) {
					int lottoNumTemp = lottoNum[i];
					lottoNum[i] = lottoNum[j];
					lottoNum[j] = lottoNumTemp;
				}
			}
		}
		System.out.print("Ver1.Lotto 선택 숫자는? ");
		// 6. 출력
		for (int i = 0; i < lottoNum.length; i++) {
			System.out.print(lottoNum[i] + " ");
		}

		System.out.println();
	}

	void printVer2() {
		// ver2.
		int lotto[] = new int[6];
		System.out.print("Ver2.Lotto 선택 숫자는? ");

		// System.out.println(lottoNum.length);
		for (int x = 0; x < lotto.length; x++) {
			lotto[x] = (int) (Math.random() * 45) + 1;

			for (int y = 0; x < y; x++) {
				if (lotto[x] == lotto[y]) {
					x -= 1;
				}
			}
		}
		// 6. 오름차순
		Arrays.sort(lotto);
		// 7. 출력
		for (int x = 0; x < lotto.length; x++) {
			System.out.print(lotto[x] + " ");
		}
	}

	public static void main(String[] args) {
		Lotto lotto = new Lotto();
		lotto.printVer1();
		lotto.printVer2();
	}
}
​

그리고 이 코드에서 저는 실제 기능은 메서드로 분리를 하고, 메인메서드에서는 해당 메서드만 호출하게끔 하였습니다.

 

printVer1()메서드와 printVer2()메서드는 static이 아니어서  lotto 객체를 생성한 후 호출하였습니다.

 

package _1229;

import java.util.Arrays;
import java.util.Random;

public class Lotto {

	public static void main(String[] args) {
		//ver1
		//1. 로또숫자 갯수는 6개 . 
		int lottoNum[] = new int[6];
		//2. 로또 숫자 범위 1~45
		int min = 1;
		int max = 45;
		//3. 숫자는 랜덤
		Random rand = new Random();
		//4. 랜덤숫자 추출
		for(int i=0; i<lottoNum.length; i++) {
			 // nextInt(45) 이면 해당 범위가 0 ~ 44 이므로 마지막에 최소값인 min을 더해줍니다.
			lottoNum[i] = (rand.nextInt((max - min) + 1) + min);
            
            //5. 중복제거
    		for(int j = 0; j < i;j++) {
    			if (lottoNum[i] == lottoNum[j]) {
                    i--;
    			}
	    		//6. 오름차순 
	    		if(lottoNum[i] < lottoNum[j]) {
	    			int lottoNumTemp = lottoNum[i];
	    			lottoNum[i] = lottoNum[j];
	    			lottoNum[j] = lottoNumTemp;
	    		}
    		}
		}
		System.out.print("Ver1.Lotto 선택 숫자는? ");
		// 6. 출력
		 for (int i = 0; i < lottoNum.length; i++) {
	            System.out.print(lottoNum[i]+ " ");
	        }
		 
		 System.out.println();
		 //ver2.
		 int lotto[] = new int[6];
		 System.out.print("Ver2.Lotto 선택 숫자는? ");
		 
		 //System.out.println(lottoNum.length);
		 for(int x = 0; x <lotto.length; x++ ) {
			 lotto[x] = (int)(Math.random()*45)+1;
			 
			 for(int y =0; x<y; x++) { 
				 if(lotto[x] == lotto[y]) { 
					 x-=1;
				 }
			 }
		 }
		// 오름차순
		 Arrays.sort(lotto);
		// 출력
		 for (int x = 0; x < lotto.length; x++) {
	            System.out.print(lotto[x]+" ");
	        }

	}
}

 

배열공부하다가.. 갑자기 꽂혀서..

로또번호를 출력하는 코드를 2가지 버전으로 나누어 만들어 보았습니다.

 

콘솔에 찍히는건 동일하게 랜덤숫자 6가지가 나오지만 조금씩 코드가 달라요~ 

 

아..재밋당 ^.^

 

매주 이 코드 돌려보고 로또를 살까요~?

반응형

댓글