관리 메뉴

오버플로

[Java] Math Class 본문

Java

[Java] Math Class

NACO 2021. 7. 29. 23:48

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]

>> 얘도 할때마다 다른 값 & 중복없이 출력됨!

 

끄읕!

Comments