哈喽,你好啊,我是雷工!
本节练习实现实体类的编程练习,以下为练习笔记;
01 添加类在解决方案中创建文件夹LeiGongModels;
在根目录下创建SuperLotoData.cs类,然后拖动到LeiGongModels文件夹中,这样的目的是为了避免多一层命名空间,导致引入时太麻烦;
02 编程类在添加的实体数据类中实现投注方式、金额、展示方式等属性:
代码如下:
namespace LeiGongSuperLotto{/// <summary>/// 实体类(数据类):大乐透数字球号码类/// </summary>public SuperLotoData {//红色球蓝色球public List<string> RedBalls { get; set; }public List<string> BlueBalls { get; set; }//投注方式public string BallType { get; set; }//金额public int Price { get; set; } = 2;//价格默认是单注价格2元;#region 构造方法//复式计算公式:M!/((M-5)!*5!)*N!/((N-2)!*2!)/// <summary>/// 构造方法:用于计算当前投注的金额/// </summary>/// <param name="redBalls">红色球集合</param>/// <param name="blueBalls">蓝色球集合</param>public SuperLotoData(List<string>redBalls,List<string>blueBalls) {this.RedBalls = redBalls;this.BlueBalls = blueBalls;//投注的方式判断 BallType = blueBalls.Count > 2 || redBalls.Count > 5 ? "复式" : "单式";//根据红色球和蓝色球数量开始计算价格int M = redBalls.Count;int N = blueBalls.Count;if (M>5 && N==2) { Price = Factorial(M) / (Factorial(M - 5) * Factorial(5)) *Factorial(2); }else if(M == 5 && N > 2) { Price = Factorial(5) * Factorial(N) / (Factorial(N - 2) * Factorial(2)); }else if(M>5 && N>2) { Price = Factorial(M)/(Factorial(M-5)*Factorial(5)) * Factorial(N)/(Factorial(N-2)*Factorial(2)); } }//递归实现阶乘private int Factorial(int a) {if (a < 1) return 0;if (a == 1) return 1;return a * (Factorial(a - 1)); }#endregion#region 扩展属性/// <summary>/// 用于显示红色球和蓝色球组合字符串/// </summary>public string BallsShow {get {string nums = string.Join(" ", RedBalls) + "|| " + string.Join(" ", BlueBalls);return nums; } }//价格后自动加上单位-元public string PriceShow => Price + "元";#endregion }}03 后记其中算法公式从网络上没有搜索到,根据自己理解写的,是否正确待验证,有了解的可以评论区留下正确的算法公式,
更多相关内容可以在交流群内沟通;