You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将两数间所有整数存入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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:58:57