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("오답입니다!");
}
}
}
}
'Programming Language > Java' 카테고리의 다른 글
람다식 - 2. 자바 API의 함수형 인터페이스 (0) | 2022.07.21 |
---|---|
람다식 - 1. 람다식(Lambda Expression) (0) | 2022.07.21 |
컬렉션 프레임워크 - 6. Stack, Deque (0) | 2022.07.20 |
컬렉션 프레임워크 - 5. Queue (0) | 2022.07.20 |
컬렉션 프레임워크 - 4. Map (0) | 2022.07.19 |