for循环中的条件

时间:2017-11-21 10:29:38

标签: c# loops

我正在试图找出为什么我的代码无法运行。任何人都可以给我一些关于如何解决这个短代码的意见吗?

    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;
}

3 个答案:

答案 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。如果您未使用{}定义范围,则会在ifelse之后接受单个语句。

答案 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;

但如果在ifelse之间插入更多代码行,则编译器不再知道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语句都可以包含一个语句或括在大括号({})中的多个语句。对于单个语句,大括号是可选的,但建议使用。

编译器会抱怨的第二件事是:

  

使用未分配的本地变量&#39; num1&#39;

if条件if (num1 == 56)中的

。您需要为此变量赋予初始值:

int num1 = 0, num2;

请关闭Add方法中的最后一个括号。现在你的代码应该编译并运行