如何将两数间所有整数存入int数组?代码输出异常求助
问题分析与解决方案
嘿,我一眼就看到你代码里的问题啦~
你嵌套了两层循环,外层循环每次遍历一个整数i,但内层循环会把整个数组的所有元素都赋值成当前的i。举个例子:当i=22时,你把数组的22个位置全设成22;接着i=23,又把所有位置改成23……直到最后i=42,整个数组都被覆盖成42了,这就是为什么你输出全是上限减一的结果。
修正方案1:用单个循环填充数组
去掉多余的内层循环,用一个索引变量来跟踪数组的位置,这样每个i只会被放到数组的对应位置:
class Program { static void Main(string[] args) { int higher = 43; int lower = 21; // 用计算式代替硬写的22,更灵活,避免长度错误 int[] numbers = new int[higher - lower]; int currentIndex = 0; for (int i = lower; i < higher; i++) { numbers[currentIndex] = i; currentIndex++; } // 用foreach遍历数组更简洁 foreach (int num in numbers) { Console.WriteLine(num); } Console.ReadLine(); } }
修正方案2:用LINQ快速生成数组
如果你的项目可以使用LINQ,一行代码就能生成目标数组,非常简洁:
// 记得添加这个命名空间引用 using System.Linq; class Program { static void Main(string[] args) { int higher = 43; int lower = 21; // Enumerable.Range(start, count) 生成从start开始的count个连续整数 int[] numbers = Enumerable.Range(lower, higher - lower).ToArray(); foreach (int num in numbers) { Console.WriteLine(num); } Console.ReadLine(); } }
另外提个小细节:如果你原本想存的是22到42(不包含21和43),那数组长度应该是higher - lower - 1,循环的起始值改成lower + 1,结束条件保持i < higher就好啦~
内容的提问来源于stack exchange,提问作者MyAlexro
相关产品推荐
相关产品推荐

