C#问题:如何在外部修改已定义掷骰子方法的面数参数
自定义骰子面数的解决方法
1. 修改掷骰子方法,添加面数参数
把原来的方法改成接受面数作为参数,这样每次调用时可以传入用户指定的数值:
static int RullaTärning(Random slumpObjekt, int sides) { // Random.Next(1, sides+1) 会生成 1 到 sides 之间的整数(包含两端) return slumpObjekt.Next(1, sides + 1); }
注:
Random.Next(a, b)的规则是返回大于等于a,小于b的随机数,所以要生成1到sides的数,第二个参数得写sides + 1
2. 在主程序中获取用户输入并调用方法
在主逻辑里先获取用户输入的面数,验证有效性后,再调用修改后的方法:
static void Main() { // 只创建一次Random实例(不要在RullaTärning方法里重复创建) Random slump = new Random(); Console.Write("请输入骰子的面数:"); string input = Console.ReadLine(); // 验证输入是否是有效整数,且面数至少为2 if (int.TryParse(input, out int sides) && sides >= 2) { int result = RullaTärning(slump, sides); Console.WriteLine($"掷出的点数是:{result}"); } else { Console.WriteLine("请输入一个大于等于2的有效整数!"); } }
关键说明
- 不要在
RullaTärning方法里每次创建Random对象:多次快速创建Random会使用相同的系统时钟种子,导致生成重复的随机数,所以只在程序初始化时创建一次即可。 - 输入验证:用
int.TryParse可以避免用户输入非数字时程序崩溃,同时判断面数≥2,符合骰子的基本逻辑。
内容的提问来源于stack exchange,提问作者oliverwahrolen
相关产品推荐
相关产品推荐

