Using inputdlg and isnan

19 visualizzazioni (ultimi 30 giorni)
Gregory Hind
Gregory Hind il 2 Mag 2020
Commentato: Gregory Hind il 2 Mag 2020
I need a user input using inputdlg, I need it to be a number and I need it to keep assking until I get a number. So far, it just gets stuck in a loop.
Please help, this should be easy!
nof=inputdlg('Enter number of floors:');
NOF=str2double(nof);
while isempty(NOF)||isnan(NOF)
disp('error')
nof=inputdlg('Enter number of floors:');
uiwait;
end

Risposta accettata

Tommy
Tommy il 2 Mag 2020
In your code, NOF never changes inside the loop. Therefore, if the loop enters, it won't ever exit because the exit condition will never be true. Make sure you are calling str2double within the loop:
res=inputdlg('Enter number of floors:');
nof=str2double(res);
while isempty(res) || isnan(nof)
% ^ user canceled ^ input was not numeric
disp('error')
res=inputdlg('Enter number of floors:');
nof=str2double(res);
end
If you want to let the user use the command line:
opts.WindowStyle = 'normal';
res=inputdlg('Enter number of floors:', '', 1, {''}, opts);
nof=str2double(res);
while isempty(res) || isnan(nof)
disp('error')
res=inputdlg('Enter number of floors:', '', 1, {''}, opts);
nof=str2double(res);
end

Più risposte (0)

Categorie

Scopri di più su Data Type Conversion in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by