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

 採用された回答

Walter Roberson
Walter Roberson 2020 年 7 月 27 日
編集済み: Walter Roberson 2020 年 7 月 27 日

0 投票

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 件のコメント

Scott Tobin
Scott Tobin 2020 年 7 月 27 日
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'
Scott Tobin
Scott Tobin 2020 年 7 月 27 日
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
Scott Tobin
Scott Tobin 2020 年 7 月 27 日
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

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchange で Loops and Conditional Statements についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by