Matrix Input Validation Help

Hello,
I am trying to validate a user input as numeric while forcing the user to repeat if it is not. I currently have this working well as long as the user does not input a letter that is non numeric. I would like it to prompt the user again if they input a string instead of a number. Any help is appreciated.
Thanks
my input looks like
array(r, c) = str2num(input(['Digit for position ', num2str(c), ': '], 's'));
while array(r, c) > 6 || array(r, c) < 0
GUESS(r, c) = str2num(input(['Digit for position ', num2str(cc), ': '], 's'));
end

 Accepted Answer

Walter Roberson
Walter Roberson on 27 Jul 2020
Edited: Walter Roberson on 27 Jul 2020
array(r, c) = str2double(input(['Digit for position ', num2str(c), ': '], 's'));
while isnan(array(r,c)) || array(r,c) ~= fix(array(r,c)) || array(r, c) < 0 || array(r, c) > 6
array(r, c) = str2double(input(['Digit for position ', num2str(cc), ': '], 's'));
end
or
array(r, c) = str2double(input(['Digit for position ', num2str(c), ': '], 's'));
while ~ismember(array(r,c), 0:6)
array(r, c) = str2double(input(['Digit for position ', num2str(cc), ': '], 's'));
end

3 Comments

Okay, thank you.
However, I know have the issue of it interpreting the input as a string. Inputing 'w' yields unrecognized funciton or variable 'w'
Actually that was on me with a typo but I do have...
Unable to perform assignment because the size of the left side is 1-by-1 and the size
of the right side is 0-by-0 for the array in the loop
Ope spotted was supposed to be str2double not str2num in the second. Appreciate the help I haven't seen it done in that manner before thanks for the tip

Sign in to comment.

More Answers (0)

Categories

Products

Community Treasure Hunt

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

Start Hunting!