Error in limiting user input to only numeric values?

Here is my code:
b = input('Enter the number of degrees celcius: ','s');
str2double(b);
while (isnumeric(b) == false)
disp(error_3)
b = input('Enter the number of degrees celcius: ','s');
str2double(b);
end
I'm running into an error where it doesn't update b and check it again on each run of the while loop? How can I fix this?

 Accepted Answer

str2double(b);
That converts the character vector b into equivalent numeric form. Then it throws away the result because you did not assign it to anything.
while (isnumeric(b) == false)
The character vector is not numeric, and nothing you do inside your loop makes b numeric, so this is an infinite loop taking into account your other code.
If you were to have done b = str2double(b); then the result of that would always be numeric, and the isnumeric(b)==false would never succeed.
When b contains characters that are not valid in building a number, then str2double() returns nan. You can test for nan using isnan()

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!