How to combine two different conditions for a user?

1 次查看(过去 30 天)
I want the user to input a number that is both an integer and within the range of 1-59. I have managed to do these two things separately, creating two different variables, but I want to combine them to just create one variable.
This is how I wrote them out separately:
while true
prompt2 = 'choose your 2nd number';
x2 = input('choose your 2nd number: ', 's');
if all(isstrprop(x2, 'digit'))
x2 = str2double(x2);
break;
else
disp('Must be an integer');
end
end
while true
prompt2 = 'choose your 2nd number';
x2 = str2double(input('choose your 2nd number: ', 's'));
if (x2 >= 1 && x2 <= 59)
break;
else
disp('Must be between 1 and 59');
end
end
But how would you combine them into 1 so that if you selected a non integer, or one outside the range an error would occur?

回答(1 个)

Greg
Greg 2018-2-9
编辑:Greg 2018-2-9
Personally, I would just round the input (and inform the user if you choose). Then, all you need is check the range.
x2 = NaN;
while isnan(x2) || x2 < 1 || x2 > 59
prompt2 = 'choose your 2nd number: ';
x2 = round(str2double(input(prompt2, 's')));
end
  2 个评论
Greg
Greg 2018-2-9
Additionally, your prompt should completely describe the conditions of the input. 'Choose an integer: 1 <= x <= 59'

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by