如何在MATLAB中验证输入是否为数字

时间:2020-06-11 18:29:23

标签: matlab

这是我编写的用于获取每个数字等级的相应字母等级的代码。我想确保用户没有输入任何字符串或字符作为输入。只有数字。所以我使用了isnumeric函数,但是代码不起作用,并且当我输入字符串时while循环也不会中断。这只是给我一个错误。将不胜感激。谢谢。

c=input('What is your grade?  ');
   while 1
if  ~isnumeric(c)
    break
end
if c>=90 && c<=100
   disp('A');
elseif c<90 && c>=80
    disp('B');
else
    disp('F');
end
   end

2 个答案:

答案 0 :(得分:1)

看看validateattributes。它比简单的isnumeric强大得多,例如您可以指定数字应位于的范围:{'>',0,'<',10}或要求其为nonnegative

validateattributes(x,{'numeric'},{'nonnegative'})

答案 1 :(得分:1)

input评估用户输入的内容*。如果用户输入的不是有效的MATLAB表达式,则会看到错误消息。

c = input('What is your grade?  ', 's');

使用's'参数可以使函数以字符串的形式准确返回用户键入的内容。然后,您可以使用str2double将其转换为数字。如果不是数字,则将返回NaN。您可以对此进行测试:

while true
   c = input('What is your grade?  ', 's');
   c = str2double(c);
   if isnan(c)
      break
   end
   disp(c)
end

*这种评估实际上使input危险地以这种形式使用,例如,用户可以输入delete('c:/windows')或类似的东西来破坏您的系统。

相关问题