[인프런 워밍업 클럽 1기] BE 5일차 과제

[인프런 워밍업 클럽 1기] BE 5일차 과제

문제


주어지는숫자를 하나를 받고 해당 숫자만큼 주사위를 돌려, 각 숫자가 몇 번 나오는지 출력하는 문제

 

public class Main {
    public static void main(String[] args) {
        System.out.println("주사위 면의 수를 입력하세요:");
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();

        int r1 = 0, r2 = 0, r3 = 0, r4 =0, r5 = 0, r6 = 0;

        for (int i = 0; i < a; i++) {
            double b = Math.random() * 6;
            if (b >= 0 && b < 1) {
                r1++;
            } else if (b >= 1 && b < 2) {
                r2++;
            } else if (b >= 2 && b < 3) {
                r3++;
            } else if (b >= 3 && b < 4) {
                r4++;
            } else if (b >= 4 && b < 5) {
                r5++;
            } else if (b >= 5 && b < 6) {
                r6++;
            }
        }

        System.out.printf("1은 %d번 나왔습니다.\n", r1);
        System.out.printf("2은 %d번 나왔습니다.\n", r2);
        System.out.printf("3은 %d번 나왔습니다.\n", r3);
        System.out.printf("4은 %d번 나왔습니다.\n", r4);
        System.out.printf("5은 %d번 나왔습니다.\n", r5);
        System.out.printf("6은 %d번 나왔습니다.\n", r6);
    }
}

제시된 코드를 최대한 클린하게 만들어라

 

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int rolls = inputDice(scanner);

        int sides = inputSide(scanner);

        int[] results = rollTheDice(rolls, sides);

        resultPrint(sides, results);
    }

    private static int inputSide(Scanner scanner) {
        System.out.print("주사위 면를 입력해주세요 :");
        int sides = scanner.nextInt();
        return sides;
    }

    private static int inputDice(Scanner scanner) {
        System.out.print("던질 횟수를 입력해주세요 :");
        int rolls = scanner.nextInt();
        return rolls;
    }


    private static int[] rollTheDice(int rolls, int sides) {
        int[] results = new int[sides + 1];

        for (int i = 1; i <= rolls; i++) {
            int number = (int)(Math.random() * sides) + 1;
            results[number]++;
        }
        return results;
    }

    private static void resultPrint(int sides, int[] results) {
        for (int i = 1; i <= sides; i++) {
            System.out.printf("%d은 %d번 나왔습니다.\n", i, results[i]);
        }
    }
}

주사위 면을 받을 수 있는 inputSide함수와 몇번 주사위를 굴릴건지 입력을 받을 수 있는 inputDice 함수,

주사위를 돌려 결과를 저장하는 rollTheDice함수와 결과를 출력하는 resultPrint 함수로 구성했다.

각 변수는 의미있는 변수명으로 바꾸고 메서드명도 그에 맞게 바꾸었다.

댓글을 작성해보세요.