이번에는 Math.random()을 이용한 주사위를 굴려서 일정 숫자가 나오는 코드를 작성해보자.
-Math.random() 함수는 double 형으로 0.0이상 1.0 미만 사이의 값을 반환하는 함수이다.
Math.random()은 double타입의 숫자를 0~1사이에서 램덤으로 생성한다.
Math.random()함수를 사용해보기 위해 아래와 같이 작성해보자.
public class Double {
public static void main(String[] args) {
int i = Math.random();
}
}
정수형 변수 i 값을 만들고 위 코드를 작성하면 에러가 발생한다.
Math.random()을 통해 나오는 값은 모두 double타입의 실수형이다.
그렇담 int i를 double i로 작성해야하는가?
사람마다 다를 수 있으나 나는 주사위의 숫자는 1~6의 정수형으로 나타나야 함으로 정수형으로 표현하고싶다.
이렇게 서로간의 자료형이 다를때 '캐스팅'이라는 방법을 사용한다.
아래와 같이 작성해보자.
public class Double {
public static void main(String[] args) {
int i = (int)(Math.random() );
System.out.println(i);
}
}
0~1사이의 소수점을 가진 i값이 정해지고 출력을해보면 i값이 출력될 것이다.
Math.random()의 사용법을 알았다. 그럼 문제다.
Q. while문과 Math.random()메소드를 이용해서 두 개의 주사위를 던졌을 때 나오는 눈을 (눈1, 눈2) 형태로 출력하고,
눈의 합이 5가 아니면 계속 주사위를 던지고, 눈의 합이 5이면 실행을 멈추는 코드를 작성하시오.
(출처 : 이것이 자바다 p133 4번 문제)
(아래는 내가 작성한 코드이다. 답이 쉽게 떠오르지않아도 괜찮다! 천천히 생각해보고 종이에 끄적여가며 작성해보자)
더보기
public class Double {
public static void main(String[] args) {
while (true) {
int i = (int)(Math.random() * 6)+1;
int j = (int)(Math.random() * 6)+1;
if (i + j == 5) {
System.out.printf("(%d, %d)", i, j);
break;
}
System.out.printf("(%d, %d)", i, j);
}
}
}
'프로그래밍 > 자바' 카테고리의 다른 글
자바001 - for문을 이용한 구구단 출력하기. (0) | 2022.03.22 |
---|---|
자바를 시작하자 (0) | 2022.03.22 |