这是我编写的用于获取每个数字等级的相应字母等级的代码。我想确保用户没有输入任何字符串或字符作为输入。只有数字。所以我使用了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
答案 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')
或类似的东西来破坏您的系统。