C# ID号生成器

C# ID号生成器,c#,C#,我一直在ifnumber%numirow处得到一个int不能转换为bool错误,我不知道如何修复它。我对C相当陌生,但我知道Python和for循环是如何工作的,但我仍然感到困惑 // 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

我一直在ifnumber%numirow处得到一个int不能转换为bool错误,我不知道如何修复它。我对C相当陌生,但我知道Python和for循环是如何工作的,但我仍然感到困惑

// 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 % NUMINROW)
             WriteLine();
           Write("{0}{1} ", letter, number.ToString("D2"));
        }
   }
}

出现编译错误的原因是数字%NUMINROW返回数字除以NUMINROW后的余数,这是一个int,而if条件必须返回bool,并且在C中没有从int到bool的隐式转换

解决此问题的一种方法是修改条件,以便将模运算的结果与另一个int进行比较,例如:

if(number % NUMINROW == 0)
其他问题

主方法末尾没有Console.ReadLine,因此一旦显示数据,控制台窗口将消失。添加此行将暂停执行,直到用户按下Enter键,让他们有时间查看数据。
此条件不正确:数字=低;数字>=高。它读取,将number设置为LOW,然后在number大于或等于HIGH时循环。这种情况永远不会是真的!!我们应该使用在条件ifnumber%NUMINROW中,第二秒出现错误


编译器指出哪一行有您的错误?我假设是这样的:如果数字%NUMINROW?也许你想要数字%NUMINROW==0?@yaakov是的,如果数字%NUMINROW@đěxěŕ注意使用静态系统。控制台;在顶部…@RufusL不,需要眼镜作为证据:对此进行扩展—其他一些语言(如Python和Javascript)可以将非布尔值视为true或false,这可能就是您希望它在不使用==0的情况下工作的原因。C故意不这样做。添加==0确实有助于解决此错误。非常感谢。但是没有输出,嗯,没有任何改变,但是谢谢你的反馈,但是没有输出,你可以更详细地描述,您是否设置了断点并检查了字母和数字?@Matty LouJames您可能需要添加一个Console.ReadKey或类似的命令来暂停应用程序,等待用户输入主方法的结尾,否则它将立即运行并退出。
static void Main(string[] args)
{
    const int LOW = 0;
    const int HIGH = 99;
    const int NUMINROW = 20;

    for (char letter = 'A'; letter <= 'Z'; letter++)
    {
        for (int number = LOW; number <= HIGH; number++)
        {
            Write("{0}{1} ", letter, number.ToString("D2"));
            if ((number + 1) % NUMINROW == 0) WriteLine();
        }
    }

    ReadLine(); // Wait for user input
}
const int LOW = 0;
const int HIGH = 99;
const int NUMINROW = 20;

WriteLine(string.Concat(Enumerable.Range('A', 26)
    .Select(chr => string.Concat(Enumerable.Range(LOW, HIGH + 1)
        .Select(num => $"{(char) chr}{num:D2}" + ((num + 1) % NUMINROW == 0
            ? Environment.NewLine : " "))))));

ReadLine();
static void Main(string[] args)
    {
        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 % NUMINROW == 0)
                    Console.WriteLine();
                else
                    Console.Write("{0}{1} ", letter, number.ToString("D2"));
            }
        }
        Console.ReadLine();
    }