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 日

0 投票

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()

1 件のコメント

Caleb Bell
Caleb Bell 2020 年 4 月 16 日
Thankyou! Works perfectly now

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

その他の回答 (0 件)

カテゴリ

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

Community Treasure Hunt

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

Start Hunting!

Translated by