我如何在 MatLab 中捕获当用户在输入中输入字母和其他不是数字的内容时出现的错误:
width = input('Enter a width: ');
我已经用try/catch
命令玩了一段时间:
width = 0;
message = '';
% Prompting.
while strcmp(message,'Invalid.') || width < 1 || width ~= int32(width)
try
disp(message)
width = input('Frame width: ');
catch error
message = 'Invalid.';
end
end
但是没有运气(以上不起作用)。如图所示,我希望在用户第一次输入他的选择时为用户提供一条简单的消息,例如"框架宽度:"。但是,如果发现错误,我希望给他的消息是"无效。再试一次:" fx 每次出现错误时。
我也尝试了error()
但我不知道如何正确放置它。由于error()
不将发生错误的input
命令作为参数,因此它必须以另一种方式检测它,而我无法弄清楚。
任何帮助将不胜感激。
width = input('Frame width: ');
while(~isInt(width))
width = input('Invalid. Try again: ');
end
并且您必须在某处具有以下功能(或它的另一个实现)
function retval = isInt(val)
retval = isscalar(val) && isnumeric(val) && isreal(val) && isfinite(val) && (val == fix(val));
end
answer = input('Frame width: ', 's');
[width, status] = str2num(answer);
while ~status || ~isscalar(width) || width ~= floor(width)
answer = input('Invalid. Try again: ', 's');
[width, status] = str2num(answer);
end
disp(width);
(如果转换失败,则status
为 0。如果没有isscalar
测试,像 [1 2; 3 4] 这样的输入也会被接受。最后一个测试确保宽度必须是整数。