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

如何在数组指定索引区间内比较元素并返回最小值?

问题分析与代码修正

你的代码存在几个关键问题,导致无法正确实现指定索引区间内找最小值的功能:

  • 循环起始位置错误:当前循环从i=0开始,而非用户指定的起始索引,会遍历区间外的元素
  • 未处理索引顺序:如果用户输入的起始索引大于结束索引,逻辑会完全错误
  • 缺少输入验证:未校验用户输入的索引是否在0-3范围内,可能引发数组越界异常

修正后的代码

class Program
{
    static int FindSmallestValue(int[] array, int startIndex, int endIndex)
    {
        // 确保起始索引小于等于结束索引
        if (startIndex > endIndex)
        {
            (startIndex, endIndex) = (endIndex, startIndex);
        }
        
        int minimum = array[startIndex];
        // 仅遍历指定索引区间内的元素
        for (int i = startIndex; i <= endIndex; i++)
        {
            if (array[i] < minimum)
            {
                minimum = array[i];
            }
        }
        Console.WriteLine("最小的值是 {0}", minimum);
        return minimum;
    }
    
    static void Main(string[] args)
    {
        int[] array = { 64, 28, 42, 37 };
        int startIndex, endIndex;
        
        // 输入第一个索引并验证有效性
        do
        {
            Console.WriteLine("输入第一个索引(0 至 3)");
        } while (!int.TryParse(Console.ReadLine(), out startIndex) || startIndex < 0 || startIndex > 3);
        
        // 输入第二个索引并验证有效性
        do
        {
            Console.WriteLine("输入第二个索引(0 至 3)");
        } while (!int.TryParse(Console.ReadLine(), out endIndex) || endIndex < 0 || endIndex > 3);
        
        FindSmallestValue(array, startIndex, endIndex);
    }
}

关键改进点

  • 修正遍历范围:从用户指定的起始索引开始,仅遍历区间内的元素
  • 索引顺序校正:自动交换起始/结束索引,避免因输入顺序错误导致逻辑失效
  • 输入合法性校验:通过循环确保用户输入有效整数且在0-3范围内,杜绝数组越界异常

内容的提问来源于stack exchange,提问作者Samuel Kabraelian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:10:33