728x90
반응형

문제

로또 번호를 입력 받아 로또 당첨 여부를 확인하시오.

6개를 다 맞추면 1등, 5개를 맞추고 보너스 번호까지 맞추면 2등, 5개만 맞추면 3등, 4개를 맞추면 4등, 3개를 맞추면 5등이다.

 

▶ 제한사항

  • 로또 번호는 1부터 45까지의 값에서만 나온다.
  • 로또는 직접 입력하거나, 랜덤으로 입력받을 수 있다.
  • 로또 번호는 중복된 번호가 나올 수 없다.
  • random() 함수를 이용한다.

 

 

코드

1. 로또 번호를 수동으로 선택할지, 자동으로 선택할지 선택

		int num[]=new int[6]; //로또 번호 6개 선택
		Scanner scan=new Scanner(System.in);

		System.out.println("★★★★★★★★★★★로또 당첨을 기원합니다★★★★★★★★★★★");
		System.out.println("----------------------------------------");

		int automatic=2;
		//로또 번호 수동/자동 출력 선택
		while(true){
			System.out.print("수동을 원하시면 0, 자동을 원하시면 1을 입력하세요 >> ");
			automatic=scan.nextInt();

			if(automatic==0 || automatic==1)
				break; //무한 루프 종료
			else
				System.out.println("잘못 입력하셨습니다.다시 입력해주세요.");
		}

 

 

2-1. 수동으로 로또 번호 입력

		if(automatic==0){
			System.out.println("----------------------------------------");
			for(int i=0;i<num.length;i++){
				System.out.printf("%d번 로또 번호를 입력하세요:",i+1);
				num[i]=scan.nextInt();
				if(num[i]<=0 || num[i]>45){ //잘못 입력했을 때
					System.out.println("\n1부터 45까지의 숫자를 입력해주세요.");
					i--;
				}
				else{
					for(int j=0;j<i;j++){
						if(num[i]==num[j]){ //같은 값이 들어가면 무효화
							System.out.printf("\n%d는 이미 입력하셨습니다.다시 입력해주세요.\n",num[j]);
							i--;
							break;//inner_for_out
						}
					}//inner_for_end
				}
			}//out_for_end
		}

 

2-2. 자동으로 로또 번호 입력

		else{
			for(int i=0;i<num.length;i++){
				num[i]=(int)(Math.random()*45+1);
				for(int j=0;j<i;j++){
					if(num[i]==num[j]){ //같은 값이 들어가면 무효화
						i--;
						break;//inner_for_out
					}
				}//inner_for_end
			}//out_for_end
		}

 

 

3. 로또 번호와 보너스 번호를 랜덤으로 저장

		//랜덤 로또 번호
		int lotto[]=new int[7]; //마지막은 보너스 번호

		for(int i=0;i<lotto.length;i++){
			lotto[i]=(int)(Math.random()*45+1);
			for(int j=0;j<i;j++){
				if(lotto[i]==lotto[j]){//같은 값이 들어가면 무효화
					i--;
					break;//inner_for_out
				}
			}//inner_for_end
		}//out_for_end

 

 

4. 로또 번호 출력

		//출력
		System.out.println("----------------------------------------");
		System.out.print("당신의 로또 번호:");
		for(int i=0;i<num.length;i++){
			System.out.print(num[i]+" ");
		}
		System.out.println(); //줄바꿈
		
		System.out.print("로또번호:");
		for(int i=0;i<lotto.length-1;i++)
			System.out.print(lotto[i]+" ");

		System.out.println("\n보너스번호:"+lotto[lotto.length-1]);
		System.out.println("----------------------------------------");

 

 

5. 로또 당첨 여부 확인

		int count=0; //맞춘 번호 숫자 카운트
		int bonus=0; //보너스 번호를 맞추지 못하면 0. 보너스 번호를 맞추면 1
		
		System.out.print("맞추신 번호:");
		for(int i=0;i<num.length;i++){
			//보너스 번호 빼고 6개의 번호 확인
			for(int j=0;j<lotto.length-1;j++){ 
				if(num[i]==lotto[j]){
					System.out.print(num[i]+" ");//맞춘 번호 출력
					count++;
				}
			}//inner_for_end
            
			//보너스 번호 일치 여부 확인
			if(num[i]==lotto[lotto.length-1])
				bonus=1;
		}//out_for_end
		
		if(count==0) //당첨된 번호가 하나도 없으면 "없음" 출력
			System.out.print("없음");
		System.out.println(); //줄바꿈

 

 

6. 로또 등수 출력

		//당첨 여부 출력
		switch(count){
		case 6:
			System.out.printf("%d개를 맞추셨습니다.1등입니다!!!\n", count);
			break;
		case 5:
			if(bonus==1)
				System.out.printf("%d개와 보너스 번호를 맞추셨습니다.2등입니다!!\n", count);
			else
				System.out.printf("%d개를 맞추셨습니다.3등입니다!!\n", count);
			break;
		case 4:
			System.out.printf("%d개를 맞추셨습니다.4등입니다!!\n", count);
			break;
		case 3:
			System.out.printf("%d개를 맞추셨습니다.5등입니다!!\n", count);
			break;
		default:
			System.out.printf("%d개를 맞추셨습니다.다음에 다시 도전해보세요^^",count);
		}

 

 

 

출력 결과

1. 수동 입력

★★★★★★★★★★★로또 당첨을 기원합니다★★★★★★★★★★★
------------------------------------------------------------
수동을 원하시면 0, 자동을 원하시면 1을 입력하세요 >> 0
------------------------------------------------------------
1번 로또 번호를 입력하세요:5
2번 로또 번호를 입력하세요:5

5는 이미 입력하셨습니다.다시 입력해주세요.
2번 로또 번호를 입력하세요:46

1부터 45까지의 숫자를 입력해주세요.
2번 로또 번호를 입력하세요:43
3번 로또 번호를 입력하세요:22
4번 로또 번호를 입력하세요:13
5번 로또 번호를 입력하세요:39
6번 로또 번호를 입력하세요:7
------------------------------------------------------------
당신의 로또 번호:5 43 22 13 39 7 
로또번호:14 16 15 27 28 21 
보너스번호:19
------------------------------------------------------------
맞추신 번호:없음
0개를 맞추셨습니다.다음에 다시 도전해보세요^^

 

2. 자동 입력

★★★★★★★★★★★로또 당첨을 기원합니다★★★★★★★★★★★
------------------------------------------------------------
수동을 원하시면 0, 자동을 원하시면 1을 입력하세요 >> 1
------------------------------------------------------------
당신의 로또 번호:14 10 19 35 43 9 
로또번호:30 14 10 45 12 21 
보너스번호:44
------------------------------------------------------------
맞추신 번호:14 10 
2개를 맞추셨습니다.다음에 다시 도전해보세요^^

 

728x90
반응형

+ Recent posts