问题
根据用户输入的骰子数量和参赛人数,有计算机生成每个骰子的点数,再累加得到每一个选手的总点数。
思路
也是用模拟算法的应用场合。骰子嘛,6个点数,随机生成一个就好了。题目所说的筛子数量是指每个人所持有的筛子数。
使用
package com.company;
public class Main {
public static void main(String[] args) {
// write your code here
Solution.diceGame();
}
}
输出
请输入参赛人数:
7
请输入每人持有的筛子数量:
3
玩家1的点数为:
骰子1的点数是:4
骰子2的点数是:6
骰子3的点数是:5
骰子点数之和是15
玩家2的点数为:
骰子1的点数是:1
骰子2的点数是:1
骰子3的点数是:1
骰子点数之和是3
玩家3的点数为:
骰子1的点数是:6
骰子2的点数是:1
骰子3的点数是:2
骰子点数之和是9
玩家4的点数为:
骰子1的点数是:5
骰子2的点数是:3
骰子3的点数是:1
骰子点数之和是9
玩家5的点数为:
骰子1的点数是:4
骰子2的点数是:1
骰子3的点数是:2
骰子点数之和是7
玩家6的点数为:
骰子1的点数是:4
骰子2的点数是:3
骰子3的点数是:1
骰子点数之和是8
玩家7的点数为:
骰子1的点数是:2
骰子2的点数是:1
骰子3的点数是:1
骰子点数之和是4
还要继续吗?(Y/N)
n
程序结束
Process finished with exit code 0
实现
package com.company;
import java.util.Random;
import java.util.Scanner;
public class Solution {
/**
* 骰子游戏
*/
static public void diceGame() {
while (true) {
System.out.println("请输入参赛人数:");
Scanner personScanner = new Scanner(System.in);
int personNumber = personScanner.nextInt();
while (personNumber < 1) {
System.out.println("参赛人数输入错误,请重新输入:");
personNumber = personScanner.nextInt();
}
System.out.println("请输入每人持有的筛子数量:");
int diceNumber = personScanner.nextInt();
while (diceNumber < 1) {
System.out.println("骰子数输入错误,请重新输入:");
diceNumber = personScanner.nextInt();
}
for (int counter = 0;counter < personNumber;counter++) {
System.out.println("玩家" + (counter + 1) + "的点数为:");
int pointSum = 0;
for (int counter0 = 0;counter0 < diceNumber;counter0++) {
Random random = new Random();
int dicePoint = random.nextInt(6) + 1;
pointSum += dicePoint;
System.out.println("骰子" + (counter0 + 1) + "的点数是:" + dicePoint);
}
System.out.println("骰子点数之和是" + pointSum);
System.out.println();
}
System.out.println("还要继续吗?(Y/N)");
Scanner charScanner = new Scanner(System.in);
String inputChar = charScanner.next();
if (!inputChar.toLowerCase().equals("y")) {
System.out.println("程序结束");
break;
}
}
}
}
网友评论