[ 작업 환경 ]
Windows10
jdk-15
1. 주사위 객체 생성
// Die.java
public class Die {
private final int MAX = 6;
private int faceValue;
public Die() {
faceValue = 1;
}
public int roll() {
faceValue = (int)(Math.random() * MAX) + 1;
return faceValue;
}
public void setFaceValue(int value) {
if (value > 0 && value <= MAX)
faceValue = value;
}
public int getFaceValue(int value) {
return value;
}
public String toString() {
return Integer.toString(faceValue);
}
}
2. 2개 주사위 동시에 굴려서 둘 다 1이 나오는 건수와 비율 구하기
public class SnakeEyes {
public static void main(String[] args){
final int ROLLS = 5000;
int count = 0;
Die die1 = new Die();
Die die2 = new Die();
for (int roll=1; roll <= ROLLS; roll++){
if (die1.roll() == 1 && die2.roll() == 1){
count ++;
}
}
System.out.println("Number of rolls : " + ROLLS);
System.out.println("Number of snake eyes : " + count);
System.out.println("Ratio : " + (float)count/ROLLS);
System.out.println("Expected Ratio : " + (float)1/36);
}
}
3. 실행하기
javac Die.java
javac SnakeEyes.java
java SnakeEyes
4. Die.java 컴파일을 하지 않고 SnakeEyes.java 컴파일한 후 SnakeEyes 실행시
Exception in thread "main" java.lang.NoClassDefFoundError: Die
at SnakeEyes.main(SnakeEyes.java:7)
Caused by: java.lang.ClassNotFoundException: Die
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 1 more
Die.java를 컴파일하여 Die.class 파일을 만들어준 후 SnakeEyes를 실행시 정상적으로 작동하는 것을 확인할 수 있습니다.