【问题标题】:How to print ONCE if there are multiple correct answers? (MATLAB)如果有多个正确答案,如何打印一次? (MATLAB)
【发布时间】:2021-02-13 09:15:32
【问题描述】:

所以我有 arr = randi([0,20],20,1)。我想显示:如果数字小于 5,则 fprintf('Yes\n') 仅一次。我正在使用 for 循环(for i = 1 : length(arr))并对其进行索引。

【问题讨论】:

    标签: matlab indexing printing matlab-figure


    【解决方案1】:

    您可以在找到小于 5 的第一个值并打印 Yes 语句后使用 break 语句。

    使用break 声明:

    arr = randi([0,20],20,1);
    
    for i = 1: length(arr)
        if arr(i) < 5
        fprintf("Yes\n");
        break;
        end
    end
    

    扩展:

    通过使用any()函数:

    或者,如果您想在不需要 for 循环的情况下简化它,any() 函数可用于确定数组中的任何值是否满足条件 arr &lt; 5

    arr = randi([0,20],20,1);
    
    if(any(arr < 5))
        fprintf("Yes\n");
    
    end
    

    使用 While 循环:

    Check = 0;
    arr = randi([0,20],20,1);
    
    i = 1;
    while (Check == 0 && i < length(arr))    
    if arr(i) < 5
        fprintf("Yes\n");
        Check = 1;
    end
    
    i = i + 1;
    end
    

    【讨论】:

    • 有没有办法不使用break?
    【解决方案2】:

    正如您的描述,您可能需要在for 循环中使用if 语句,如下所示

    for i = 1:length(arr)
      if arr(i) < 5
        fprintf('Yes\n');
        break
      end
    end
    

    如果你想打印一次Yes,可以试试

    if any(arr < 5)
      fprintf('Yes\n')
    endif
    

    如果你不想使用break,下面的代码可能是一个选项

    for i = 1:min(find(arr <5))
      if (arr(i) < 5)
        fprintf('Yes\n');
      end
    end
    

    【讨论】:

    • 有没有办法不使用break?
    猜你喜欢
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    相关资源
    最近更新 更多