我必须表达行2,-3,4,-5,6,-7等的前100名成员。我是C#语法的新手,仍在学习它并做这样的练习以供审阅。我很确定我知道自己想要什么:做一个for循环并在其中嵌套一个if语句,只需添加一个减号' - '在奇数前面。
static void Main()
{
for (int chislo = 2; chislo < 102; chislo++)
{
if (chislo % 2 == 0)
{
Console.WriteLine(chislo);
}
else
{
Console.Write("-",chislo);
}
}
}
答案 0 :(得分:1)
正如HimBromBeere所回答的,你需要在“”和chislo之间添加+。在IF中使用WriteLine也没有意义。
如果您希望数字位于同一行
,那么您的代码应该是什么样子public static void Main()
{
for (int chislo = 2; chislo < 102; chislo++)
{
if (chislo % 2 == 0)
{
Console.Write(chislo);
}
else
{
Console.Write("-" + chislo + " ");
}
}
}
另外,既然你问为什么它只给你偶数,因为在Console.Write("-", chislo)
当涉及到数字3时,它会进入其他地方并且只接受减号(“ - ”),因为你没有在 - 和chislo之间有一个+运算符。
Късмет! :)
答案 1 :(得分:1)
正如其他人所说,您错误地使用了Console.Write("-",chislo)
。此特定方法调用尝试使用第一个字符串作为模板和其余参数(在您的情况下只有一个)作为要插入字符串的项目来执行字符串格式。由于您没有占位符({x}
其中x
是参数索引),因此它不会执行任何操作,只会打印出未更改的模板字符串。 See here
要使用原始代码进行演示,您可以执行此操作。 (我在这里假设您希望这一切都在同一行。在您的示例中,您在if语句中使用写行,这将导致新行被启动):
for (int chislo = 2; chislo < 102; chislo++)
{
if (chislo % 2 == 0)
{
Console.Write(chislo);
}
else
{
//Using the format method correctly
Console.Write("-{0}", chislo);
}
//If you want your numbers seperated by commas
if (chislo < 101)
{
Console.Write(",");
}
}
但是,如果您碰巧使用至少c#6,则可以使用string interpolation,这允许您将逻辑放入字符串生成中。我没有提倡在没有清理的情况下在生产中使用它,但它确实证明了替代方案。
for (int chislo = 2; chislo < 102; chislo++)
{
Console.Write($"{(chislo % 2 == 0 ? "" : "-")}{chislo}{(chislo < 101 ? "," : "")}");
}
答案 2 :(得分:0)
请记住,我还没有看到提到过的东西。考虑以下两行代码之间的区别:
Console.Write("-" + chislo); // Line 1
Console.Write(-chislo); // Line 2
第1行是我在其他答案中看到的原始代码的更正形式。但第2行更简单:它不是构造一个字符串来表示chislo
的负值,而是将负值本身传递给Console.Write
,允许该函数担心如何格式化它。我认为这更清洁,更容易理解。它的优点还在于Console.Write
将使用用户计算机上定义的适用区域设置呈现数值。例如,如果有人使用除-
以外的负号符号,他们就会看到他们习惯使用此符号的符号。