while expression specification - problems with error messages
5 次查看(过去 30 天)
显示 更早的评论
Hello,
is there any (simple) way to set up that an input can contain ONLY values from an interval (not necessarily of integers)?
Something such as:
abc=input('Choose a number from <-1000;999>: ')
while abc<1000||abc>999
abc=input('Wrong! Choose again a number from <-1000;999>: ')
works good, when I answer outside the interval. However, when I answer with a letter or with nothing typed at all - just clicking on enter button, I get these error messages:
??? Error using ==> input
Undefined function or variable '_that letter_'.
or
??? Error: Unexpected MATLAB expression.
for the letters. And:
??? Operands to the || and && operators must be convertible to logical scalar values.
Error in ==> blah at 12
while abc<-1000||abc>999
while no typing an answer at all. I want to make it idiotproof as much as possible.
I guess I am not even taking into account typing more inputs (probably nargin>1; error('... :'?). That could actually sort out the latter, too via nargin<1, right?
0 个评论
采纳的回答
Walter Roberson
2012-12-31
If you wish to be able to detect and smoothly handle letters in input, you need to use
abc_string = input('Choose a number from <-1000;999>: ', 's');
and then you have to figure out whether the string in abc_string looks like a number or not and then convert it to a numeric value.
Note: your current code has
while abc<1000||abc>999
but the beginning of your range is negative so you would want
while abc<-1000||abc>999
0 个评论
更多回答(1 个)
Azzi Abdelmalek
2012-12-31
编辑:Azzi Abdelmalek
2012-12-31
abc=input('Choose a number from <-1000;999>: ')
while abc<-1000 || abc>999
abc=input('Wrong! Choose again a number from <-1000;999>: ')
if isempty(abc) | ~isnumeric(abc)
abc=1000
end
end
4 个评论
Walter Roberson
2012-12-31
You can use try/catch . But better is to use the 's' option of input() and look at whether you have a number-like-string before you convert the string to numeric.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Characters and Strings 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!