我正在试图找出为什么我的代码无法运行。任何人都可以给我一些关于如何解决这个短代码的意见吗?
int num1, num2;
num2 = Convert.ToInt32(Console.ReadLine());
for (i = 0; i < 2; i++)
{
if (num1 == 56)
Console.WriteLine(Add(i, num1));
num2--;
else num1 = 56;
}
}
static int Add(int num1, int num2)
{
return num1 + num2;
}
答案 0 :(得分:2)
定义if/else
语句的范围。
int num1, num2;
num2 = Convert.ToInt32(Console.ReadLine());
for (i = 0; i < 2; i++)
{
if (num1 == 56)
{
Console.WriteLine(Add(i, num1));
num2--;
}
else num1 = 56;
}
您正在执行Console.WriteLine
之后的if
。如果您未使用{
和}
定义范围,则会在if
或else
之后接受单个语句。
答案 1 :(得分:0)
它没有运行,因为如果你使用if和else语句,它们之间有超过1行,那么它们都必须带有大括号。
例如:
if ()
{
} //Nothing has to be between these two, if you want to use an if and else statement
else
{
}
看一下C#语法:
https://www.tutorialspoint.com/csharp/csharp_basic_syntax.htm https://www.tutorialspoint.com/csharp/csharp_decision_making.htm
答案 2 :(得分:0)
由于某些原因,您的代码无法编译。主要部分是if/else
构造。
在C#中有一种用于编写if条件的快捷语法。如果if语句后面只有一行代码,那么你可以省略定义范围的花括号。编译很好:
if (num1 == 56)
Console.WriteLine(Add(i, num1));
else num1 = 56;
但如果在if
和else
之间插入更多代码行,则编译器不再知道else
所属的位置。并且它会通过错误消息告诉您:
}预期
因此,在这种情况下,您需要定义if-block的范围。
if (num1 == 56)
{
Console.WriteLine(Add(i, num1));
num2--;
// all the rest of the code that you wish to be executed
}
else num1 = 56;
documentation说明如下:
then语句和else语句都可以包含一个语句或括在大括号({})中的多个语句。对于单个语句,大括号是可选的,但建议使用。
编译器会抱怨的第二件事是:
if条件使用未分配的本地变量&#39; num1&#39;
if (num1 == 56)
中的。您需要为此变量赋予初始值:
int num1 = 0, num2;
请关闭Add
方法中的最后一个括号。现在你的代码应该编译并运行