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