일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 상속
- Serializable
- Join
- InputStream
- transient
- 난수
- driver
- java
- select
- JDBC
- DB연동
- 오라클
- Annotaion
- DB
- 8bit
- set
- 조회
- stream
- Connection
- Reader
- 16bit
- 예외처리
- where
- Oracle
- 다이얼로그
- statement
- Transaction
- array
- 자바
- swing
- Today
- Total
오버플로
[Java] Math Class 본문
Math Class는 사용하면 아주 편리한 Class!
Java에서 제공해주는 method들로 다양한 일을 할 수 있다 :)
Math Class
- 객체화 하지 않고 사용하는 클래스
- 사용법) 클래스명.method명()
<종류>
- 절대값 : 데이터형 변수명 = Math.abs(값);
- 반올림 : 소수점 첫번째 자리에서 반올림
: 변수명 = Math.round(값);
- 올림 : 소수점 첫 번째 자리에서 올림 (0이외의 값을 올림)
: Math.ceil(실수);
- 내림 : Math.floor(실수);
- 버림 : 없다. casting으로 처리!
: double d = 3.14; . (int)d
- 난수 (Random number) : double = Math.random( );
> 약 0.0000000000000000 ~ 0.9999999999999999 사이의 수가 나옴
> Math.random() * 범위의 수
# 오늘의 코딩 #
- Java 입문자들은 거쳐간다는 Random Password 만들기 & 로또 번호 추출하기 (중복 제거)
#Password 먼저!#
package test;
public class UseMath {
public static final int UPPER = 0; // 영어 대문자
public static final int LOWER = 1; // 영어 소문자
public static final int DECIMAL = 2; // 숫자
/**
* 영어 대소문자와 숫자를 결합한 7자리 password를 만드는 method<br>
* @return
*/
public char[] createPassword() {
char[] tempPass = new char[7];
// 대문자 65~90 , 소문자 97~122, 숫자 48~57
int flag = 0; // 0 대문자 1 소문자 2 숫자
for (int i = 0; i < tempPass.length; i++) {
flag = (int) (Math.random() * 3); // 0,1,2 중 하나 추출
switch (flag) {
case UPPER:
tempPass[i] = (char) ((Math.random() * 26) + 65);
break;
case LOWER:
tempPass[i] = (char) ((Math.random() * 26) + 97);
break;
case DECIMAL:
tempPass[i] = (char) ((Math.random() * 10) + 48);
}// end switch
} // end for
return tempPass;
} // creatPassword
public static void main(String[] args) {
UseMath pw = new UseMath();
System.out.println("랜덤 패스워드 생성 : " + pw.creatPassword());
}// main
}// class
- 영어 대소문자/숫자 구분 없이 모든 자릿수에 랜덤으로 들어가도록
임의의 수(0,1,2)를 추출하고 그 값에 따라 해당 범위에 맞는 값들이 추출되도록 코딩!
# 출력 결과 #
랜덤 패스워드 생성 : 1VoPD4c
>> 할때마다 다른 값이 잘 나온다 ㅎㅎ
#이제 로또 번호#
package test;
import java.util.Arrays; // 배열 출력을 위한 import
public class UseMath2{
/**
* 로또 번호(1~45)를 랜덤으로 추출하는 method<br>
* @return
*/
public int[] pickLottoNum() {
int[] lottoNum = new int[6]; // 로또번호를 저장할 배열
for (int i = 0; i < 6; i++) {
lottoNum[i] = (int) (Math.random() * 45 + 1); // 1~45의 수 추출
for (int j = 0; j < i; j++) { // 번호 중복 체크
if (lotto[j] == lotto[i]) {
i--; // 현재 방의 번호를 다시 생성
break; // 가장 가까이에 있는 반복문 탈출!
} // end if
} // end for
} // end for
return lottoNum;
}// pickLottoNum
public static void main(String[] args) {
UseMath2 lotto = new UseMath2();
System.out.println("로또 번호 생성 : " + Arrays.toString(lotto.pickLottoNum()));
}// main
}// class
- 1~45의 수를 얻기 위해 45의 range를 얻고 +1을 적용
- 배열에 난수를 할당하되, 값이 중복될 수 없으므로 if문으로 중복 check.
(값이 같으면 해당 횟수를 차감하고 다시 실행하는 방식)
# 출력 결과 #
로또 번호 생성 : [8, 34, 6, 43, 10, 22]
>> 얘도 할때마다 다른 값 & 중복없이 출력됨!
끄읕!
'Java' 카테고리의 다른 글
[Java] Date Class / SimpleDateFormat Class / Locale Class (0) | 2021.08.01 |
---|---|
[Java] StringTokenizer (0) | 2021.07.30 |
[Java] Interface (0) | 2021.07.28 |
[Java] Inner Class / Nested Class / Local Class / Anonymous Inner Class (0) | 2021.07.27 |
[Java] Overloading / Overriding / Annotaion / Abstract Class (0) | 2021.07.26 |