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

循环逻辑错误修正需求:如何在数字序列输出中跳过所有末尾为指定数字的数值

修正C#数字序列生成代码(跳过末尾指定数字的数)

你想要生成一段从起始数字开始、共n个数字的序列,但要跳过所有末尾是指定数字(比如3)的数,对吧?你的原代码确实存在几个逻辑问题,导致没法实现预期功能,我来帮你修正并解释下:

原代码的核心问题

  • 循环条件i <= n错误:这里的n是你要生成的序列长度,不是数字的上限,不能用它来判断循环结束
  • 跳过逻辑错误:你只判断了当前数字不等于指定的iBöseZahl,但需求是跳过所有末尾为该数字的数(比如指定3的话,13、23这些都要跳过),不是只跳过单个数字
  • 没有计数已生成的有效数字:你需要跟踪已经输出了多少个符合要求的数字,直到达到n个才停止循环

修正后的代码

Console.Write("Enter the Böse Number (the digit to skip at the end):");
int iBöseZahl = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter the starter number:");
int iStarter = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter how many numbers you want to generate:");
int n = Convert.ToInt32(Console.ReadLine());

int count = 0; // 计数已生成的有效数字
int current = iStarter; // 当前检查的数字

while (count < n)
{
    // 判断当前数字的最后一位是否是要跳过的数字
    if (current % 10 != iBöseZahl)
    {
        Console.Write($"{current}, ");
        count++; // 有效数字计数加1
    }
    current++; // 不管是否有效,都检查下一个数字
}

优化版(输出格式更美观)

如果不想让最后一个数字后面带逗号,可以把有效数字先存到列表里,再统一输出:

Console.Write("Enter the Böse Number (the digit to skip at the end):");
int iBöseZahl = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter the starter number:");
int iStarter = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter how many numbers you want to generate:");
int n = Convert.ToInt32(Console.ReadLine());

List<int> result = new List<int>();
int current = iStarter;

while (result.Count < n)
{
    if (current % 10 != iBöseZahl)
    {
        result.Add(current);
    }
    current++;
}

// 用逗号分隔输出,自动处理末尾无多余符号
Console.WriteLine(string.Join(", ", result));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 15:32:29