package com.group.libraryapp.play;
import java.util.Scanner;
public class Playground {
public static void main(String[] args) {
System.out.println("숫자를 입력하세요 : ");
Scanner scanner = new Scanner(System.in);
// 변수명 수정
int diceRollCount = scanner.nextInt();
// 주사위를 만든다.
int maxDiceNumber = 6;
DiceRollCounterMachine diceRollCounterMachine = new DiceRollCounterMachine(maxDiceNumber);
diceRollCounterMachine.roll(diceRollCount);
diceRollCounterMachine.printRollResult();
}
private static Dice makeDice(int maxDiceNumber) {
return new Dice(maxDiceNumber);
}
private static class Dice {
private final int diceNumber;
private Dice(int diceNumber) {
validateDiceNumber(diceNumber);
this.diceNumber = diceNumber;
}
private static void validateDiceNumber(int diceNumber) {
if (diceNumber <= 0) {
throw new IllegalArgumentException("응 주사위 아니야");
}
}
public int roll() {
return (int) (Math.random() * diceNumber);
}
}
private static class DiceRollCounterMachine {
private final int[] counterMemory;
private final Dice dice;
public DiceRollCounterMachine(int diceMaxNumber) {
validate(diceMaxNumber);
dice = new Dice(diceMaxNumber);
counterMemory = new int[diceMaxNumber];
}
public void roll(int diceRollCount) {
for (int i = 0; i < diceRollCount; i++) {
int num = dice.roll();
counterMemory[num]++;
}
}
private void validate(int diceMaxNumber) {
if (diceMaxNumber <= 0) {
throw new IllegalArgumentException("응 주사위 안돌아가");
}
}
public void printRollResult(){
for (int i = 0; i < counterMemory.length; i++) {
System.out.printf("%d는 %d번 나왔습니다\n",i+1,counterMemory[i]);
}
}
}
}
클린 코드를 작성하기 위해서 3가지를 최대한 지키려고 했습니다.
1. 변수명에 의미를 부여한다.
2. 함수는 작게 만들고 하나의 기능만 담당한다.
3. 클래스는 하나의 책임을 갖는다.
주사위를 만들고, 주사위를 던지고, 주사위를 출력한다.
주사위 슬롯 머신이라는 클래스를 만들면 좋겠다는 생각을 했습니다.
사용자가 주사위의 크기와 몇번 던질지 입력을 하면 알아서 내부에서 계산해주는 거죠
내부에서 주사위라는 객체를 만들고 , 주사위는 던져졌을때 나온 숫자를 알려주는 기능을 갖고 있습니다.
주사위 머신은 그 결과를 저장해서 보관하고, 출력하는 기능을 가진 클래스입니다.
'스터디공부 > 인프런 워밍업' 카테고리의 다른 글
인프런 워밍업 스터디 일곱 번째 과제! (진도표 7일차) (0) | 2024.02.27 |
---|---|
인프런 워밍업 0기 여섯 번째 과제! (진도표 6일차) (0) | 2024.02.26 |
인프런 워밍업 4일차 과제 제출 (0) | 2024.02.22 |
인프런 워밍업 3일차 과제 (0) | 2024.02.21 |
인프렁 워밍업 2일차 (0) | 2024.02.20 |