1. Math 클래스
java.lang.Math 클래스는 수학 계산에 사용할 수 있는 메소드를 제공한다.
해당 메소드들은 모두 정적(static) 이므로 Math 클래스로 바로 사용 가능하다.
메소드 |
설명 |
예제 코드 |
리턴값 |
int abs(int a) double abs(double a) |
절대값 |
int v1 = Math.abs(-5); double v2 = Math.abs(-3.14); |
v1 = 5 v2 = 3.14 |
double ceil(double a) |
올림값 |
double v3 = Math.ceil(5.3); double v4 = Math.ceil(-5.3); |
v3 = 6.0 v4 = -5.0 |
double floor(double a) |
버림값 |
double v5 = Math.floor(5.3); double v6 = Math.floor(-5.3); |
v5 = 5.0 v6 = -6.0 |
int max(int a, int b) double max(double a, double b) |
최대값 |
int v7 = Math.max(5, 9); double v8 = Math.max(5.3, 2.5); |
v7 = 9 v8 = 5.3 |
int min(int a, int b) double min(double a, double b) |
최소값 |
int v9 = Math.min(5, 9); double v10 = Math.min(5.3, 2.5); |
v9 = 5 v10 = 2.5 |
double random() |
랜덤값 |
double v11 = Math.random(); |
0.0 <= v11 < 1.0 |
double rint(double a) |
가까운 정수의 실수값 |
double v12 = Math.rint(5.3); double v13 = Math.rint(5.7); |
v12 = 5.0 v13 = 6.0 |
long round(double a) |
반올림값 |
long v14 = Math.round(5.3); long v15 = Math.round(5.7); |
v14 = 5 v15 = 6 |
double value = 12.3456;
double temp1 = value * 100;
long temp2 = Math.round(temp1); // 소수 셋째 자리수에서 반올림!
double v16 = temp2 / 100.0;
System.out.println(“v16 = ” + v16);
round() 메소드는 항상 소수 첫 번째 자리에서 반올림해서 정수값을 리턴한다.
원하는 자리에서 반올림 하려면 반올림할 자리를 맞추기 위해 10n 을 곱한다.
random() 메소드는 0.0 과 1.0 사이의 범위에 속하는 하나의 double 타입 값을 리턴한다.
0.0 <= Math.random() < 1.0
1 ~ 10 까지의 정수 난수를 얻으려면 아래와 같은 순서로 연산식을 만든다.
① 각 변에 10을 곱하면 0.0 <= ... < 10.0 사이 하나의 double 타입의 값을 얻을 수 있다.
0.0 * 10 <= Math.random() < 1.0 * 10
② 각 변을 int 타입으로 강제 타입 변환하면 0 <= ... < 10 사이의 범위에 속하는
하나의 int 타입 값을 얻을 수 있다.
(int)(0.0 * 10) <= (int)(Math.random()*10) < (int)(1.0*10)
③ 각 변에 1을 더하면 1 <= ... < 11 사이의 범위가 된다.
(int)(0.0 * 10) + 1 <= (int)(Math.random()*10) < (int)(1.0*10) + 1
④ 따라서 start <= ... < start + n 범위에 속하는 하나의 정수를 얻기 위해서는 아래와 같은 연산식을 만들면 된다.
int num = (int) (Math.random() * n) + start;
예)
주사위 번호 뽑기 : int num = (int) (Math.random() * 6) + 1;
로또 번호 뽑기 : int num = (int) (Math.random() * 45) + 1;
2. Random 클래스
java.util.Random 클래스는 난수를 얻어내기 위한 다양한 메소드를 제공한다.
Math.random() 메소드는 0.0 ~ 1 사이의 double 난수를 얻는 데만 사용한다면,
Random 클래스는 boolean, int, long, float, double 난수를 얻을 수 있다.
Random 클래스는 종자값(seed)를 설정할 수 있다.
종자값은 난수를 만드는 알고리즘에 사용되는 값으로, 종자값이 같으면 같은 난수를 얻는다.
Random 클래스로 부터 Random 객체를 생성하는 생성자 2 가지
Random() : 호출 시마다 다른 종자값(현재 시간 이용) 이 자동 설정된다.
Random(long seed) : 매개값으로 주어진 종자값이 설정된다.
Random 클래스가 제공하는 메소드들
리턴값 |
메소드(매개 변수) |
설명 |
boolean |
nextBoolean() |
boolean 타입의 난수를 리턴 |
double |
nextDouble() |
double 타입의 난수를 리턴 (0.0 <= ~ < 1.0) |
int |
nextInt() |
int 타입의 난수를 리턴 (-231 <= ~ <= (231 - 1)) |
int |
nextInt(int n) |
int 타입의 난수를 리턴 (0 <= ~ < n) |
예) RandomExample.java : 로또 번호 얻기
public class RandomExample {
public static void main(String[] args) {
//선택번호
int[] selectNumber = new int[6]; // 선택 번호 6개가 저장될 배열 [자동]
Random random = new Random(3); // 선택 번호를 얻기 위한 Random 객체 생성
System.out.print(“선택 번호 : ”);
for(int i = 0; i < 6; i++) {
selectNumber[i] = random.nextInt(45) + 1; // 선택 번호를 얻어 배열에 저장
System.out.print(selectNumber[i] + “ ” );
}
System.out.println();
// 당첨번호
int[] winningNumber = new int[6]; // 당첨 번호 6개가 저장될 배열
random = new Random(5); // 당첨 번호를 얻기 위한 Random 객체 생성
System.out.print(“당첨 번호 : ”);
for(int i = 0; i < 6; i++) {
winningNumber[i] = random.nextInt(45) + 1; // 당첨 번호를 얻어 배열에 저장
System.out.println(winningNumber[i] + “ ” );
}
System.out.println();
// 당첨 여부 확인하기
Arrays.sort(selectNumber); // 오름차순 정렬
Arrays.sort(winningNumber);
boolean result = Arrays.eqauls(selectNumber, winningNumber); // 배열 항목값 비교
System.out.print(“당첨 여부 : ”);
if(result) {
System.out.println(“1등 당첨!!!”);
} else {
System.out.println(“꽝!”);
}
}
}
'Java 기본 문법 - 참조 서적 [이것이 자바다 - 한빛미디어] > 9. 기본 API 클래스' 카테고리의 다른 글
15. Java 자바 [API] - Format 클래스 (0) | 2020.09.29 |
---|---|
14. Java 자바 [API] - Date, Calendar 클래스 (0) | 2020.09.29 |
12. Java 자바 [API] - Wrapper (포장) 클래스 (0) | 2020.09.29 |
11. Java 자바 [API] - Arrays 클래스 (0) | 2020.09.29 |
10. Java 자바 [API] - 정규 표현식, Pattern 클래스 (0) | 2020.09.24 |