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

如何用for循环生成1 1 2 2…重复序列?现有C#代码出错求修正

如何用C#的for循环生成重复数字序列(如1 1 2 2 ...)

你需要生成类似“1 1 2 2 3 3 ... 17 17”的序列(共34个元素,每个数字重复两次),但现有代码逻辑复杂导致输出不符合预期。下面提供两种简单的修改方案:

方案一:完全重写简洁版

直接针对需求设计逻辑,用最少的代码实现:

int num1 = 34;
// 用StringBuilder优化字符串拼接性能,避免频繁创建字符串
StringBuilder sb = new StringBuilder();
// 每个数字需要输出两次,所以循环次数是总长度的一半
for (int i = 1; i <= num1 / 2; i++)
{
    sb.Append($" {i} {i}");
}
// 去掉开头多余的空格,赋值给文本框
txt_number.Text = sb.ToString().Trim();

逻辑说明:因为要生成34个元素,每个数字重复两次,所以循环17次(34/2),每次将当前数字连续添加两次,最后处理掉开头的空格即可。

方案二:修改原有循环逻辑

如果不想完全重写,可直接通过循环变量计算当前要输出的数字:

int num1 = 34;
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= num1; i++)
{
    // 每两个位置对应一个数字,整数除法自动取整
    int currentNum = (i + 1) / 2;
    sb.Append($" {currentNum}");
}
txt_number.Text = sb.ToString().Trim();

逻辑说明:通过(i + 1) / 2的整数除法,让第1、2次循环输出1,第3、4次输出2……以此类推,完美匹配需求。

原代码问题说明

原代码引入了prevNumber、nextNumber、identity等过多变量,逻辑分支复杂且混乱,容易出现状态切换错误,导致输出不符合预期。简化后的逻辑直接针对需求设计,更易维护且不易出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 13:30:16