사실 자바를 잘 모른다.. 하지만 적용하고 싶었던 것은, 겉에서 볼 때 흐름이 잘 보이도록 만드는 것이다. 이런 흐름을 가장 잘 보여주는 방법이 메소드 체이닝이라고 생각한다. 또한 dice의 종류를 정하거나, 굴리는 개수를 외부에서 입력받아 변화에 자유롭게 만들었다.
main
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception{
System.out.print("숫자를 입력하세요 : ");
Scanner scanner = new Scanner(System.in);
int rollNum = scanner.nextInt();
new Dice(12).roll(rollNum).displayResults();
}
}
Dice class
import java.util.Arrays;
import java.util.stream.IntStream;
public class Dice {
private int maxNum;
private int[] result;
public Dice(int maxNum) {
this.maxNum = maxNum;
this.result = new int[maxNum];
}
public Dice roll(int rolls){
for (int i = 0; i < rolls; i++) {
int randomNumber = (int)(Math.random() * maxNum);
result[randomNumber]++;
}
return this;
}
public void displayResults() {
IntStream.range(0, maxNum)
.forEach(i -> System.out.printf("%d는 %d번 나왔습니다.\n", i + 1, result[i]));
}
}