如何用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
相关产品推荐
相关产品推荐

