1

这是代码段。如果 if 语句成功,我想回到循环 1。如果 if 语句成功,我需要程序不要添加 1000。

editA.i== 0 在程序的开头。

我想比较两列字符串并获得距离度量。

我已经尝试过 break 和 continue 命令,但它们都没有按我的意愿工作。

谢谢你

for(editA.i; editA.i<6; editA.i++)  // Loop 1
{
    for(editB.j=0; editB.j<6; editB.j++)    // Loop 2
    {
        if(editA.A[editA.i] == editB.B[editB.j])  // if this statment works, 
            // I want to go back to "Loop 1". How???

            sum+= abs(editA.i - editB.j);

        else
            sum+= 1000;
    }

}
4

3 回答 3

11
for(editA.i; editA.i<6; editA.i++)  // Loop 1 
{ 
    for(editB.j=0; editB.j<6; editB.j++)    // Loop 2 
    { 
        if(editA.A[editA.i] == editB.B[editB.j])  // if this statment works  I want to go back to "Loop 1"
        {
            sum+= abs(editA.i - editB.j); 
            break ;
        }

        else 
            sum+= 1000; 
    } 
} 
于 2012-08-31T20:23:17.493 回答
1

如果您只想逃离内部循环,我会在“if 语句”中添加一个 break 语句。如果要完全转义两个循环,则应使用 return 语句。

于 2012-08-31T20:38:08.153 回答
1

Grzegorz 的回答是正确的,但是,您的要求可能会有所不同。

这是你想要的吗?

for(editA.i; editA.i<6; editA.i++)  // Loop 1
{
    bool found = false;
    for(editB.j=0; editB.j<6; editB.j++)    // Loop 2
    {
        if(editA.A[editA.i] == editB.B[editB.j]) {  
           sum+= abs(editA.i - editB.j);
           found = true;
           break; 

       }

    }
    if ( !found ) {
        sum += 1000;
    }
}
于 2012-08-31T20:54:53.717 回答