我认为您的问题指出了您发现这很困难的原因。您试图在一个地方解决太多问题,这变得势不可挡。你不想创建一个单一的方法来做到这一点。您将需要创建几个。首先将问题分解为其组成部分。
注意:我不是以面向对象的方式来解决这个问题,以使答案更容易解析。我鼓励您更详细地考虑设计。
要求 1:滚动一种模具 - 4 、 6 、 8 、 10 或 12 面
好的 - 所以我们需要一些类似于:
int Roll(int边);
基本上 Roll 只是返回一个介于 1 和边(包括)之间的随机值。
要求 2:最多可以掷出 10 个此类骰子
这可能是一个 for 循环。
要求 3:如果超过一半的骰子是 1,则打印一条消息,表示它们已失败并结束程序
此要求意味着您将每次调用 Roll 的结果存储在一个集合中 - 例如,一个 List 或一个 int[](整数数组)。
接下来它说您正在迭代该集合并计算“1”的滚动数。如果计数大于滚动总数的一半,则结束程序。计数很容易(for 循环或 foreach 可能是您最好的选择)并且您知道进行了多少次滚动(通过集合中的项目数以及因为在进行滚动时您的 for 循环上有一个计数器.. . 所以划分和比较。
要求4:如果任何一个骰子与掷出的骰子类型相同,则从该组中取最高值。以及重新掷出与掷出的骰子类型值相等的骰子。
再次 - 您需要遍历结果集并执行操作请求。我不会尝试通过将此规则与之前的规则结合起来来“优化”您的解决方案——它只会使解决方案复杂化而没有真正的好处。