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?

 Akzeptierte Antwort

Walter Roberson
Walter Roberson am 16 Apr. 2020
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()

Weitere Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by