Using inputdlg and isnan
20 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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
Réponse acceptée
Tommy
le 2 Mai 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
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Data Type Conversion dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!