[JAVA] Random 난수구하기 문제풀이

JoJo·2023년 6월 29일
0
post-custom-banner

💡 문제 1. 가위 바위 보 중 하나를 선택, 승패을 결정하는 게임프로그램 만들기

ex.
===== 가위 바위 보 게임 =====
숫자를 선택하세요(1.가위 / 2.바위 / 3.) : 1
========== 결과 ==========
당신은 가위를 냈습니다.
컴퓨터가 보를 냈습니다.
==========================
당신이 이겼습니다 ^^*

🪂 소스코드

package com.kh.day03.array.exercise;

import java.util.Random;
import java.util.Scanner;

public class Exercise_Random {
	public void exRand1() {
		
		Scanner sc = new Scanner(System.in);
		Random rand = new Random();
		System.out.println("===== 가위 바위 보 게임 =====");
		System.out.print("숫자를 선택하세요(1.가위 / 2.바위 / 3.보) : ");
		
		// 당신
		int inputNum = sc.nextInt();
		if(inputNum == 1) {
			System.out.println("당신은 가위를 냈습니다.");
		} else if(inputNum == 2) {
			System.out.println("당신은 바위를 냈습니다.");
		} else if(inputNum == 3) {
			System.out.println("당신은 보를 냈습니다.");
		} else {
			System.out.println("1 ~ 3 중에 입력해주세요.");
		}
		
		// 컴퓨터
		int computer = rand.nextInt(3)+1;
		if(computer == 1) {
			System.out.println("컴퓨터가 가위를 냈습니다.");
		} else if(computer == 2) {
			System.out.println("컴퓨터가 바위를 냈습니다.");
		} else{
			System.out.println("컴퓨터가 보를 냈습니다.");
		}
		System.out.println("==========================");
		
		// 결과
		if(inputNum > 0 && inputNum < 4) {
			if(inputNum == 1) {
				if(computer == 1) {
					System.out.println("비겼습니다.");
				} else if(computer == 2) {
					System.out.println("당신이 졌습니다.");
				} else {
					System.out.println("당신이 이겼습니다.");
				}
			} else if (inputNum == 2) {
				if(computer == 1) {
					System.out.println("당신이 이겼습니다.");
				} else if(computer == 2) {
					System.out.println("비겼습니다.");
				} else {
					System.out.println("당신이 졌습니다.");
				}
			} else if(inputNum == 3) {
				if(computer == 1) {
					System.out.println("당신이 졌습니다.");
				} else if(computer == 2) {
					System.out.println("당신이 이겼습니다.");
				} else {
					System.out.println("비겼습니다.");
				}
			}
		} else {
			System.out.println("1 ~ 3 사이의 숫자를 입력해주세요");
		}
	}
}


💡 문제 2. 로또 번호 자동 생성기 프로그램, 중복 없이 추출하기 (단, 결과는 오름차순으로 정렬, 로또 번호는 6개. 로또 번호의 범위는 1 ~ 45)


🪂 소스코드

public void lottoExercise() {
	// 로또 번호 자동 생성기 프로그램, 중복 없이 추출하기
	// 단, 결과는 오름차순으로 정렬
	// 로또 번호는 6개. 로또 번호의 범위는 1 ~ 45
	
	int [] lottoNums = new int[6];
	Random rand = new Random();

// 아래 과정을
//		lottoNums[0] = rand.nextInt(10);
//		lottoNums[1] = rand.nextInt(10);
//		lottoNums[2] = rand.nextInt(10);
//		lottoNums[3] = rand.nextInt(10);
//		lottoNums[4] = rand.nextInt(10);
//		lottoNums[5] = rand.nextInt(10);
	
	// 입력
	
	// 22 16 22 45 6 29
	// 22 1 39 14 14 19
	//  0 1  2  3  4  5
	
//		int count = 1;
//		int check = 1;
	// 중복없이 1 ~ 45 사이의 랜덤한 수를 6개 뽑는 것.
	for(int i = 0; i < lottoNums.length; i++) {
		lottoNums[i] = rand.nextInt(45)+1;
		for(int e = 0; e < i; e++) {
			if(lottoNums[e] == lottoNums[i]) {
				// 다시 뽑아야야함.
				i--;
				break;
			}
		}
	}
//			count++;		
//			check++;

// 아래 과정을 for문으로 변환
//			if(lottoNums[1] == lottoNums[0]) {
//				// 다시 뽑아야함.
//			
//			}
//			// ==========================
//			if(lottoNums[2] == lottoNums[1]) {
//				// 다시 뽑아야함.
//				
//			}
//			if(lottoNums[2] == lottoNums[0]) {
//				// 다시 뽑아야함.
//			// ==========================
//			}
//			if(lottoNums[3] == lottoNums[2]) {
//				// 다시 뽑아야함.
//				
//			}
//			if(lottoNums[3] == lottoNums[1]) {
//				// 다시 뽑아야함.
//				
//			}
//			if(lottoNums[3] == lottoNums[0]) {
//				// 다시 뽑아야함.
//				
//			}
		
	// 버블 정렬
	// for의 변수가 증가하기만 하면됨.
	// 단, 안에 있는 for문의 조건식의 최대값은 감소(-i) 해야함.
	for(int i = 0; i < lottoNums.length; i++) {
		for(int j = 0; j < (lottoNums.length-1)-i; j++) {
			// 왼쪽이 크면 저리 바꾸기
			if(lottoNums[j] == lottoNums[j+1]) {
				int temp = lottoNums[j]; // 왼쪽에 있는 값이 지워지기 전에 킵해 놓음
				lottoNums[j+1] = lottoNums[j]; // 오른쪽에 있는 값을 왼쪽에 대입람
				lottoNums[j] = temp; // 킵해놓은 값을 오른쪽에 대입함
			}
		}
	}
		

	// 출력
	for(int i = 0; i < lottoNums.length; i++) {
		System.out.print(lottoNums[i] + " ");
	}
}
profile
꾸준히
post-custom-banner

0개의 댓글