[인프런 워밍업 클럽 1기] BE 5일차 과제
6개월 전
문제
주어지는숫자를 하나를 받고 해당 숫자만큼 주사위를 돌려, 각 숫자가 몇 번 나오는지 출력하는 문제
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 함수로 구성했다.
각 변수는 의미있는 변수명으로 바꾸고 메서드명도 그에 맞게 바꾸었다.
댓글을 작성해보세요.