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

如何在循环中保存List<int>找到的元素避免被覆盖并用于比较

解决方法:正确保存第一个1的变量并避免循环覆盖

你的问题核心是变量作用域的问题——原代码里的temp和count都声明在for循环内部,每次循环迭代都会重新创建并初始化,根本没法保留第一个1的值,更没法用来和其他元素持续比较。

按你的需求,正确的做法是把要保留的变量(比如第一个1的值)和计数变量都放到循环外部声明,先找到第一个1,再用它去和列表里的其他元素对比。

修改后的代码(通用版)

public static void Main()
{
    List<int> list = new List<int>();
    list.Add(0);
    list.Add(0);
    list.Add(1);
    list.Add(1);
    list.Add(0);
    list.Add(0);
    list.Add(1);

    // 变量声明在循环外部,避免每次循环被重新初始化
    int firstOne = -1; // 初始值设为非0/1的数,标记还没找到第一个1
    int count = 0;

    // 第一步:找到第一个值为1的元素并保存
    foreach (int num in list)
    {
        if (num == 1)
        {
            firstOne = num;
            break; // 找到第一个就退出循环,避免多余操作
        }
    }

    // 确认找到第一个1后,再和其他元素比较
    if (firstOne != -1)
    {
        foreach (int num in list)
        {
            if (num == firstOne)
            {
                count++;
            }
        }
        Console.WriteLine($"和第一个1相同的元素总数:{count}");
    }
    else
    {
        Console.WriteLine("列表中没有1");
    }
}

针对原代码“和下一个元素比较”的调整版

如果你的需求是用第一个1和它之后的元素逐个对比(对应原代码里的list[i+1]逻辑),可以改成这样:

public static void Main()
{
    List<int> list = new List<int>();
    list.Add(0);
    list.Add(0);
    list.Add(1);
    list.Add(1);
    list.Add(0);
    list.Add(0);
    list.Add(1);

    int firstOne = -1;
    int count = 0;
    int firstIndex = -1;

    // 找到第一个1的位置和值
    for (int i = 0; i < list.Count; i++)
    {
        if (list[i] == 1)
        {
            firstOne = list[i];
            firstIndex = i;
            break;
        }
    }

    if (firstIndex != -1)
    {
        // 从第一个1的下一个元素开始遍历比较
        for (int i = firstIndex + 1; i < list.Count; i++)
        {
            if (list[i] == firstOne)
            {
                count++;
            }
        }
        Console.WriteLine($"第一个1之后,相同元素的数量:{count}");
    }
    else
    {
        Console.WriteLine("列表中没有1");
    }
}

核心关键点

  • 要保留的变量(firstOne、count)必须在循环外部声明,这样整个程序执行过程中只会初始化一次,不会被循环覆盖
  • 先单独遍历找到第一个1,找到后立刻停止遍历,避免多余操作
  • 后续的比较逻辑基于已保存的变量,确保不会被循环内的赋值操作覆盖

内容的提问来源于stack exchange,提问作者Giorgi Tamazashvili

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:57:24