一个空的if语句

时间:2016-08-11 17:05:22

标签: matlab loops if-statement

我有这个设置:

for i=1:10
    if (condition1)

    elseif (condition2)
        (do something)
    else
        (do something)
    end
end

对于condition1,如果条件满足,我不希望发生任何事情,我只想再次使用下一个值i运行循环。我该怎么做?我可以在if声明下面留空,还是有更优雅的方法来做到这一点?如果我删除第一个if语句,如果没有满足其他条件,循环期间会发生什么?

如果可能的话,我想避免运行第一个if语句,因为我的问题是复杂程度最高。我必须检查condition1,因为如果符合,那么我想转到i的下一个值。我希望这个问题有道理。

5 个答案:

答案 0 :(得分:3)

你想使用continue语句,这会跳过循环的当前迭代:

for i=1:10

    if (condition)
        continue;

    elseif (condition)
        (do something)

    else 
        (do something)

    end
end

请参阅:http://www.tutorialspoint.com/matlab/matlab_continue_statement.htm

答案 1 :(得分:1)

ialquaz的答案是正确的(在我看来),所以不需要详细说明。相反,我会回答你的第二个问题:

  

如果我删除第一个if语句,循环期间会发生什么   如果没有满足其他条件?

这取决于你的条件,但一般来说,是的!

这是因为最后else捕获了所有其他条件都不满足的情况。例如,假设您有以下循环:

n = 9;
x = zeros(1,n);
for ii = 1:n
    if ii < 3
        continue;
    elseif ii > 5
        x(ii) = 4;
    else 
        x(ii) = 6;
    end
end
x =    
   0   0   6   6   6   4   4   4   4

正如您所看到的,continue语句在开始时使循环跳过最后elseifelse。这意味着不会触及前2个元素。在elseif ii > 5设置为ii == 6后,4会导致所有元素更高。当ii >= 3 & ii <= 5 else将捕获剩余的案例时,这些元素将为6。现在,让我们看看如果我们跳过第一个if

会发生什么
n = 9;
x = zeros(1,n);
for ii = 1:n
    if ii > 5
        x(ii) = 4;
    else 
        x(ii) = 6;
    end
end
x =
   6   6   6   6   6   4   4   4   4

前三个元素不再被第一个if语句所涵盖,因此被else捕获。

答案 2 :(得分:0)

如果您想condition2如果condition1为真,请跳过for i = 1:10 if ~(condition1) if (condition2) (do something) else (do something) end end end ,只需提出相反的要求:

~

true(&#34; not&#34;)会将false转为else,反之亦然。由于只有condition2condition1时才要执行false order_by之前和之后的两个语句块,因此必须在每次迭代中明确检查它。

答案 3 :(得分:0)

for i=1:10
    if (condition) && ~(condition1)
        (do something)
    elseif ~(condition1)
        (do something)
    end
end

您也可以通过以上方式完成

答案 4 :(得分:0)

如果条件1恰好是真的并且如果是真的那么&#39;你不想做任何事情,你在代码中不需要这样做。所以我会选择这样的事情:

for i=1:10
    //commenting 'if' for condition1 since you wouldn't need it
    //if (condition1)

    if (condition2)
        (do something)
    else
        (do something)
    end
end