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?

 채택된 답변

Walter Roberson
Walter Roberson 2020년 4월 16일
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()

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

질문:

2020년 4월 16일

댓글:

2020년 4월 16일

Community Treasure Hunt

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

Start Hunting!

Translated by