首页 > 解决方案 > 检查边界内的值

问题描述

我正在尝试创建一个函数来验证一个值是否在选定的边界内,如果不是,用户必须重试直到验证。

我想知道为什么我的代码会跳过任何给定值的 if 条件并返回输入提示:“错误:无效的表达式。检查是否缺少乘法运算符、缺少或不平衡的分隔符或其他语法错误。”

A=limit(5pi/6,-pi/2,pi/2)例如直接跳转到 else 条件,而if 条件为

这是我的代码:


function alpha = limit(pos,min,max)

 if (pos >= max) && (pos <= min) 
     alpha=pos;
 else
     while pos >= max || pos <= min 
        prompt = 'Enter value between max and min';
        alpha = input(prompt);
    end 
 end

end

标签: matlab

解决方案


该函数首先检查 是否pos同时大于或等于max 小于或等于min

我希望您打算max大于min. 因此,该if行应该是:

if (pos <= max) && (pos >= min)

我假设您的val_max/val_min是拼写错误(应该是max/ min)然后,您的while循环取决于pos. 但是pos永远不会在循环中更新,因此您的循环将永远迭代。

您需要在循环pos内部进行更新才能使其正常工作。while尝试这样的事情:

function alpha = limit(pos,min,max)

    while pos > max || pos < min 
        prompt = 'Enter value between min and max';
        pos = input(prompt);
    end 

    alpha = pos;

end

推荐阅读