C# 如何修改静态类中的值来动态调整帕斯卡三角的生成行数
第一步:修改StaticClass的n的修饰符
原来的n用了const修饰,属于编译期常量,运行过程中无法修改,需要改成可读写的静态变量:
class StaticClass { // 把const改成static int,保留默认值15 public static int n = 15; }
第二步:调整Constructor类的数组初始化逻辑
原来的triangle数组是在类定义时就初始化,会在程序启动时就用默认的n值创建数组,无法响应用户输入的新n值,需要把初始化逻辑挪到构造函数中:
class Constructor { // 只声明数组,不在这里初始化 int[][] triangle; public Constructor(int n) { // 拿到传入的n之后再初始化数组 triangle = new int[n][]; xmethod(n); } public void xmethod(int n) { for (int row = 0; row < triangle.Length; row++) { triangle[row] = new int[row + 1]; for (int k = 0; k < triangle[row].Length; k++) { if (k > 0 && k < triangle[row].Length - 1) triangle[row][k] = triangle[row - 1][k - 1] + triangle[row - 1][k]; else triangle[row][k] = 1; Console.Write(triangle[row][k] + "\t"); } Console.WriteLine(); } } }
额外修正:原来的逻辑判断里用了单&位运算符,这里改成双&&逻辑与运算符更符合业务场景
第三步:修改Program.cs的主逻辑,增加用户输入处理
在Main方法中先输出提示、接收并校验用户输入,再赋值给StaticClass.n,最后生成帕斯卡三角:
class Program { static void Main(string[] args) { Console.WriteLine("How long do you want me to generate"); // 循环校验输入,直到用户输入合法的正整数 while (!int.TryParse(Console.ReadLine(), out int inputN) || inputN <= 0) { Console.WriteLine("输入不合法,请输入正整数:"); } // 赋值给StaticClass的n StaticClass.n = inputN; // 生成帕斯卡三角 Constructor ct = new Constructor(StaticClass.n); Console.ReadKey(); } }
内容的提问来源于stack exchange,提问作者Xm Par
相关产品推荐
相关产品推荐

