1. 원본 코드
import java.util.Scanner;

// Press Shift twice to open the Search Everywhere dialog and type `show whitespaces`,
// then press Enter. You can now see whitespace characters in your code.
public class Main {

    public static void main(String[] args) throws Exception{
        System.out.print("숫자를 입력하세요 : ");
        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);

    }
}
  1. 코드 변경
import java.util.Scanner;

// Press Shift twice to open the Search Everywhere dialog and type `show whitespaces`,
// then press Enter. You can now see whitespace characters in your code.
public class Main {
    public static void main(String[] args) throws Exception{

        System.out.print("주사위의 최대 값을 입력하세요. : ");
        Scanner scannerDiceNumber = new Scanner(System.in);
        int diceNumber = scannerDiceNumber.nextInt();

        System.out.print("숫자를 입력하세요 : ");
        Scanner scannerCastNumber = new Scanner(System.in);
        int castNumber = scannerCastNumber.nextInt();

        int[] arrayFrequency = new int[diceNumber];

        for(int i = 0; i < diceNumber ; i++){
            arrayFrequency[i] = 0;
        }

        for(int i = 0; i < castNumber ; i++){
            int b = (int)(Math.random() * diceNumber);
            arrayFrequency[b]++;
        }

        for(int i = 0; i < diceNumber ; i++){
            System.out.printf("%d은 %d번 나왔습니다.\\n", i+1, arrayFrequency[i]);
        }

    }
}

함수를 나누기 전에 주사위의 최대값도 입력받도록 코드를 수정하였다.

주사위의 최대값은 6까지 있는 주사위인지. 20까지 있는 주사위인지를 뜻한다.

그리고, 주사위 최대값 만큼 배열을 만들어서 각 숫자별로 나오는 횟수를 저장할 수 있도록 변경하였다.

결과

Untitled

  1. 함수 쪼개기

Main.java

public class Main {

    public static void main(String[] args) throws Exception{

        InputMessage inputStep = new InputMessage();
        inputStep.printInputMessage();

        DiceCalculator calcStep = new DiceCalculator(inputStep.getDiceNumber(), inputStep.getCastNumber());
        calcStep.castFrequencyCalc();

    }

Main 함수를 크게 두개로 나누었다.

첫번째 부분은 주사위 수와, 던지는 횟수를 입력받는 부분이다. 이것은 InputMessage 클래스를 이용하여 구현하였다.