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

C#程序调试:如何实现每输出20个ID后准确换行?

调试C# ID生成程序的换行问题

需求说明

生成并显示公司所有可能的ID编号(ID格式为一个字母后跟两位数字,例如A00或Z99),要求每输出20个ID后换行。

我修改后的代码

// Program displays every possible ID number for a company
// ID number is a letter, followed by a two-digit number
// For example -- A00 or Z99
// Go to a new display line after every 20 IDs
using static System.Console;
class DebugFive3
{
    static void Main()
    {
        char letter;
        int number;
        int row = 0;
        const int LOW = 0;
        const int HIGH = 99;
        const int NUMINROW = 20;
        for (letter = 'A'; letter <= 'Z'; ++letter)
            for (number = LOW; number <= HIGH; ++number)
            {
                ++row;
                if (row > NUMINROW)
                {
                    row = 0;
                    WriteLine();
                }
              
                Write("{0}{1} ", letter, number);
                
            }
    }
}

问题描述

当前代码首行能按20个ID换行,但后续行需要输出21个ID才会换行,不符合需求。希望保留已声明的变量和常量,以最小改动修复问题。

原练习代码

// Program displays every possible ID number for a company
// ID number is a letter, followed by a two-digit number
// For example -- A00 or Z99
// Go to a new display line after every 20 IDs
using static System.Console;
class DebugFive3
{
   static void Main()
   {
      char letter;
      int number;
      const int LOW == 0;
      const int HIGH == 99;
      const int NUMINROW = 20;
      for(letter = 'A'; letter < 'Z'; ++letter)
        for(number = LOW; number > HIGH; ++number)
        {
           if(number % NUMINROW0)
              WriteLine();
           Write("{0}{{1} ", letter, number.ToString("D2"));
        }
   }
}

修复方案

只需调整row计数、换行判断和ID输出的顺序,同时补全数字的两位格式化,即可解决问题:

// Program displays every possible ID number for a company
// ID number is a letter, followed by a two-digit number
// For example -- A00 or Z99
// Go to a new display line after every 20 IDs
using static System.Console;
class DebugFive3
{
    static void Main()
    {
        char letter;
        int number;
        int row = 0;
        const int LOW = 0;
        const int HIGH = 99;
        const int NUMINROW = 20;
        for (letter = 'A'; letter <= 'Z'; ++letter)
            for (number = LOW; number <= HIGH; ++number)
            {
                // 先输出格式化后的ID
                Write("{0}{1} ", letter, number.ToString("D2"));
                // 输出后再递增计数
                ++row;
                // 当计数达到20时换行并重置计数
                if (row == NUMINROW)
                {
                    WriteLine();
                    row = 0;
                }
            }
    }
}

修复逻辑说明

  1. 调整操作顺序:将ID输出放在row计数递增之前,确保每输出一个ID后再统计数量,避免计数提前导致的换行时机错误。
  2. 修正判断条件:将row > NUMINROW改为row == NUMINROW,确保每输出满20个ID就立即换行,而非等第21个ID输出前才换行。
  3. 补全数字格式化:添加ToString("D2")保证数字始终显示为两位(如0显示为00,9显示为09),符合需求中的ID格式要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 11:23:19