랜덤 클래스(Random Class)와 사용자 입력(User Input)

1. 랜덤 클래스(Random Class)

 - 무작위로 값을 생성해내는 내부 알고리즘을 지닌 클래스

 - import java.util.Random; 를 입력

 

2. 랜덤 클래스의 기능

 - Random( ) : 랜덤한 값 생성

 - nextInt( ) : 랜덤한 값 출력 (100을 넣으면 100중에서 출력)

// Example
package smaple;

import java.util.Random;

public class Main {
	public static void main(String[] args) {
		Random a = new Random();			// 랜덤한 값 생성
		
		for(int i = 0; i < 5; i++) {
			// 종자값(seed) : 이 것을 토대로 구해서 줌
			System.out.println(a.nextInt(100));	// 100 중 랜덤한 값 출력
		}
	}
}

 

3. 랜덤클래스 예제

package sample;

//주사위 클래스를 만들어 던지기 기능 활용하기
import java.util.Random;

class Dice {
	int roll() {
		Random ranNum = new Random();
		int value = ranNum.nextInt(6);	// 0 ~ 5가 출력
		return value + 1;		// 이렇게 하면 1 ~ 6이 출력
	}
}

public class Main {
	public static void main(String[] args) {
		Dice mine = new Dice();
		int count = 0;
		
		// 2개의 주사위를 던져 더블이 나올 때까지 던지기
		while(true) {
			int first = mine.roll();
			int second = mine.roll();
			
			System.out.println(first + " / " + second);
			count++;
			
			if (first == second) {			// 더블이 나올 때 까지 던짐
				System.out.println("더블!");	// 더블!
				break;
			}
		}
		System.out.println("던진 횟수는 : " + count);	// 더블이 나올 떄 까지 던진 횟수
	}
}

 

4. 사용자 입력(User Input)

 - 사용자의 입력(키보드, 파일 등)을 처리할 수 있는 클래스

    ※ import java.util.Scanner 를 사용

 

5. 사용자 입력의 기능

 - Scanner a = new Scanner(System.in) : 입력 (시스템으로부터 사용자 입력을 받는 a 객체)

 - System.out : 출력

 - nextInt( ) : 정수를 입력받음

 - nextLine( ) : 문자열을 입력받음

// Example1
package sample;

import java.util.Scanner;	// 사용자의 입력(키보드, 파일 등)을 처리할 수 있는 클래스

public class Main {

	public static void main(String[] args) {
		System.out.println("");			// 출력
		
		// 시스템으로부터 사용자 입력을 받는 a 객체
		Scanner a = new Scanner(System.in);	// 입력
		
		// 정수 입력
		System.out.print("숫자를 입력하세요 : ");
		int value = a.nextInt();				// 정수를 입력받음 (숫자를 입력)
		System.out.println("당신이 입력한 숫자는 : " + value);	// 입력한 값 출력
		
		// 문자열 입력
		a.nextLine();		// 떠다니는 엔터를 제거하는 용도
		System.out.print("이름을 입력하세요 : ");
		String name = a.nextLine();				// 문자열을 입력받음 (문자열 입력)
		System.out.println("당신이 입력한 이름은 : " + name);	// 입력한 문자열 출력
	}
}

 

// Example2
package sample;
// 사용자가 입력한 아이디와 비번이 실제 아이디 비번과 동일한지 확인하기

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		String originId = "beansdrawer";
		String originPw = "1234abcd";
		
		Scanner input = new Scanner(System.in);
		
		System.out.print("아이디를 입력하세요 : ");
		String inputId = input.nextLine();
		
		if(originId.equals(inputId)) {
			System.out.print("비밀번호를 입력하세요 : ");
			String inputPw = input.nextLine();
			if(originPw.equals(inputPw)) {
				System.out.println("로그인 성공입니다");
			} else {
				System.out.println("비밀번호를 틀렸습니다");
			}
		} else {
			System.out.println("아이디가 존재하지 않습니다.");
		}
	}
}

 

6. 랜덤클래스 및 사용자입력 예제

// Example1
package sample;

import java.util.*;
// 랜덤으로 생성된 숫자를 사용자가 직접 맞춰보자
// 숫자 범위를 1에서 50으로 확장하는 대신, 사용자의 입력 횟수를 10회로 제한하자!
public class Main {
	public static void main(String[] args) {
		Random ranNum = new Random();
		int number = ranNum.nextInt(50) + 1; // 1 ~ 50
		Scanner input = new Scanner(System.in);
		int count = 1;
		
		while(true) {
			if (count > 10) {
				System.out.println("");
				System.out.println("입력 횟수 10번을 초과하셨습니다");
				break;
			}
			System.out.println("");
			System.out.println(count + "번째 시도입니다.");
			System.out.print("1 ~ 50 중 선택해 주세요 : ");
			int inputNumber = input.nextInt();
			
			if(inputNumber == number) {
				System.out.println("정답입니다!");
				break;
			} else {
				System.out.println("오답입니다!");
			}
			count++;
		}
	}
}

 

// Example2
package sample;

import java.util.*;
// 알파벳 맞추기
// 힌트 : 대문자 A는 유니코드가 65번
public class Main {
	public static void main(String[] args) {
		// 유니코드를 호환
		// 유니코드 : 자바에서 문자를 표현하기 위해 각 문자에 번호를 붙여놓은 것
		Random r = new Random();
		char alpha = (char)(65 + r.nextInt(26));	// 65부터 알파벳 개수만큼
		
		String alpha_s = String.valueOf(alpha);		// 주어진 값을 문자열로 변환
		
		Scanner input = new Scanner(System.in);
		
		// 넥스트라인으로 알파벳 하나 입력하고, 비교해서 맞췄나 확인하기 (while 무한반복)
		while(true) {
			System.out.print("알파벳을 입력해 주세요 : ");
			String inputAlpha = input.nextLine();
			
			if(inputAlpha.equals(alpha_s)) {
				System.out.println("정답입니다!");
				break;
			} else {
				System.out.println("오답입니다!");
			}
		}
	}
}