MatLab:整数输入的错误处理



我如何在 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] 这样的输入也会被接受。最后一个测试确保宽度必须是整数。

相关内容

  • 没有找到相关文章

最新更新