MATLAB: Input: How to differntiate between numbers and strings

characterinputnumbersstring

Hello everyone,
I am currently writing a code that asks the user to enter a number, let's say 1, 2, or 3. However, I would like to include the case that the user accidently enters characters like 'xyz'. Matlab then displays by standard:
Error using input
Undefined function or variable 'xyz'.
What I want Matlab now to do is to just display a message like:
Invalid! Please enter 1, 2, or 3.
How can I do this?
Thanks a lot for your help!

Best Answer

You have several options:
1. Continue using input as is, but just wrap it in a try, catch block.
isokinput = false;
while ~isokinput
try
userinput = input('enter some numbers');
isokinput = true; %this line only gets executed if input does not raise an error
catch
fprintf('Invalid expression. Please retry\n\n');
end
end
2. Take the input as string, check that the string is valid. For example to check that only digit were entered (using regexp):
isokinput = false;
while ~isokinput
userinput = input('enter some numbers', 's');
if isempty(regexp(userinput, '^\d+$')) %check that only digits have been entered
fprintf('Invalid expression. Please retry\n\n');
else
isokinput = true;
end
end
3. Again, take the input as string. Attempt to convert it to number and complain if it doesn't:
isokinput = false;
while ~isokinput
userinput = input('enter some numbers', 's');
usernumber = str2double(userinput); %will return nan if it can't convert the number
if isnan(usernumber)
fprintf('Invalid expression. Please retry\n\n');
else
isokinput = true;
end
end
Related Question