My footsteps

code 실습 / 🔟 본문

국비수업/CODE

code 실습 / 🔟

밀김 2023. 2. 28. 14:36
728x90

 

 

 

 

 

🔥죽음의 로또 프로그램 만들기🔥

번호 자동 생성과 번호 수동 생성을 구현해보세요

로또 번호는 중복 허용 X, 정렬하여 출력해 주세요

 

 

< 👇중복제거..그나마 쉬운 설명 ㅠㅠ👇 >

https://youtu.be/3Q3rin_IIEA

 

 

 

 

 

package ex3.control;
import java.util.Random;
import java.util.Scanner;
public class MyNumber {
	public static void main(String[] args) {
		
		boolean run = true;
		//while문 작동을 위한
		
		int[] lotto = new int[6];
		//로또 배열 0~5 (배열길이 6)
		Random rand = new Random();
		//로또 랜덤값들을 위한 랜덤 객체
		
		System.out.println("< Lotto 관리 프로그램 >");
		System.out.print("1.번호 자동 생성\n2.번호 수동 생성\n3.내 로또 번호 보기\n4.종료\n> ");	
		//스타트 페이지
		
		while(run) {
			Scanner sc = new Scanner(System.in);
			//스타트페이지에서 메뉴 번호 입력받기 위한 스캐너
			int num = sc.nextInt();
			//입력받은 메뉴 번호를 담기위한 num 변수 생성
			
			if(num==1) { //메뉴 1번(자동생성)을 골랐을때
				System.out.println("< Lotto 번호 자동생성 >");
				System.out.println("인덱스     로또번호");
			
			
			
			for(int i=0; i<lotto.length; i++) {
				lotto[i] = rand.nextInt(45)+1;
				for(int j=0; j<i; j++) {
				//0번째 인덱스는 비교대상이 없고
				//1번째 인덱스는 0번과 비교해야하고
				//2번째 인덱스는 0과1이랑 비교해야하고
				//3번째 인덱스는 0,1,2와 비교해야하고
				//4번째 인덱스는 0,1,2,3
				//5번째 인덱스는 0,1,2,3,4와 비교한다.
				//i가 index를 의미하니까 i=0~5 이고 j는 비교대상들인 0,01,012 이런것들이다
				//그래서 j<i 라는 식을 쓴다.(i가 0번째 인덱스로 시작할때(1) j 즉, 비교대상은 아무것도 없으니(0)	
					if(lotto[i] == lotto[j]) { //중복일때
						i--; //i값을 빼서 중복을 없애준다
						break;//그리고 브레이크
					}
				}
			}//자동생성 중복제거
		
		
		
		
		int tmp = 0;
		//빈컵 준비
		for(int i=0; i<lotto.length-1; i++) {//-1을 하는 이유는 총 다섯번을 비교하기 때문에 0<=i<5 즉,0~4
			for(int j=0; j<lotto.length-1-i; j++) {//-i를 하는 이유는 이미 정렬이된 인덱스를 또 살피면 안되기 때문에
				if(lotto[j+1]<lotto[j]) {
					tmp = lotto[j];
					lotto[j] = lotto[j+1];
					lotto[j+1] = tmp;
				}
			}
		}//자동생성 정렬
		
		System.out.print("1     │");
		
		for(int i=0; i<lotto.length; i++) {
			System.out.printf("%d ",lotto[i]);
		}//자동생성 출력
		System.out.print("\n1. 저장하고 메인메뉴로 가기\n2.취소하고 메인메뉴로 가기\n>");
		}//if문 끝
			
			
			
			
			
		else if(num==2) { //메뉴 2번(수동생성)을 골랐을때
			System.out.println("< Lotto 번호 수동생성 >");
			System.out.print("번호를 입력하세요 (예; 6 7 12 20 40 45)\n>");
			
			for(int i=0; i<lotto.length; i++) {
				lotto[i] = sc.nextInt();
				//입력한 수동번호를 lotto배열에 저장.칸마다 저장하기 위해 for문 사용
			}
			
			for(int j=0; j<lotto.length-1; j++) {
				for(int j=0; j<lotto.length-1-i; j++){
                    if(lotto[j+1]<lotto[j]) {
                        int tmp = lotto[j];
                        lotto[j] = lotto[j+1];
                        lotto[j+1] = tmp;
                    }//if문 끝
                }//두번째 for문 끝
			}//수동생성 정렬
			
			for(int i=0; i<lotto.length; i++) {
				System.out.printf("%d ",lotto[i]);
			}//수동생성 출력
			
			System.out.print("\n1. 저장하고 메인메뉴로 가기\n2.취소하고 메인메뉴로 가기\n>");
		}//else if문 끝
	}//while문 끝		
		
	

		


	}
}//main 끝

 

 

 

 

 

 

 

 

 

728x90

'국비수업 > CODE' 카테고리의 다른 글

code 실습 / 1️⃣2️⃣  (0) 2023.03.03
code 실습 / 1️⃣1️⃣  (0) 2023.03.02
code 실습 / 9️⃣  (0) 2023.02.27
🕺보이즈 플래닛 시나리오🕺 / 최종 코드  (0) 2023.02.24
code 실습 / 8️⃣  (0) 2023.02.24