-3

我有一个如下的逻辑,我有一个计数器

if(condition1 == true)
{
           // do something

    if (counter==1)
    { 
        // break and go to last else statement
    }


}

else if (condition2==true)
{ 
    if (counter == 2)
    { 
        // break and go to last else statement
    }

    // do something
}
else
{
    // do this
}

我如何在这个逻辑中使用 break ?我尝试为 else 放置 goto 标签,但显然它无效。我想避免切换,因为逻辑太多。

counter 将在第二个 if else 循环中为 2,如果 counter = 2 then first if and secong if else should execute if counter=3 then first if second if else 第三个 if else 应该执行 ans -</p>

4

7 回答 7

3

注意:问题已更改,此答案同时不正确!

您可以更改if/else if以包含counter. 那么你不需要breakor goto

if (condition1 && counter != 1)
{
    // do something
}
else if (condition2 && counter != 2)
{
    // do something
}
else
{
    // do this
} 
于 2013-01-17T11:45:59.387 回答
2

使用类似的东西

if (condition1 &&  ( counter != 1 || counter != 2 ||          .... counter!= n )
{
// do something
}
else if (condition2 && (counter != 2 || ..            || counter!= n )
{
// do something
}

and so on 
else
{
// do this
 } 
于 2013-01-18T07:14:13.763 回答
1

除了break语句不会跳出if条件之外,您的代码可以以更简单的方式重构(如果只是拼写错误,就假装在第一个之后的右大括号)

if(condition1 ==true && counter != 1)
{
    do something
}
else if (condition2==true && counter != 2)
{ 
    do something
}
else
{
    do this 
}
于 2013-01-17T11:49:44.097 回答
1

我怀疑您的算法可以完全重新设计,但没有更多不可能知道的上下文。

同时,您可以将最终的 else 子句重构为单独的方法。您实际上不需要使用break(无论如何这在声明中都是无效的if),明智地使用else.

private void MyMethod()
{
    if(condition1)
    {
        // do something

        if (counter==1)
        { 
            MyOtherMethod();
        }        
    }    
    else if (condition2)
    { 
        if (counter == 2)
        { 
            MyOtherMethod();
        }
        else
        {
            // do something
        }
    }
    else
    {
        MyOtherMethod()
    }
}

private void MyOtherMethod()
{
    // Do what was in your final else clause.
}

在您的问题编辑将第一个 if 子句中的“做某事”移动到计数器检查之前,这也可以:

假设您的各种“做某事”陈述是不同的事情:

if (condition1 && counter != 1)
{
    // Do something.
}
else if (condition2 && counter != 1)
{
    // Do something.
}
else
{
    // Do something else.
}
于 2013-01-17T11:54:55.113 回答
0

只需将逻辑放在最后一个 else 块中的单独函数中,您可以随时随地调用该函数。

于 2013-01-17T11:42:26.437 回答
0

不要。在如此大的循环中使用breakandcontinue会增加复杂性并使您的逻辑混乱。

如果循环变得太大,请在循环中使用一个或多个命名良好的函数调用。

于 2013-01-17T11:47:19.700 回答
0
bool myCondition = false;

if(condition1 ==true)
{
    if (counter==1){myCondition = true;}

    // do something
}
else if (condition2==true)
{ 
    if (counter==1){myCondition = true;}

    // do something
}

// so on 

if(myCondition)
{
    // do this 
}
于 2013-01-17T11:48:09.920 回答