如何在inputdlg()中捕获用户

时间:2012-03-23 14:56:07

标签: matlab dialog user-input

这是我的计划。

clc
clear
ques='Yes';
while strcmp(ques,'Yes')
ns={'One','Two','Three','Four','Five'};
[selection ok]= listdlg('liststring',ns,'selectionmode','single');
while ok ==0
    msgbox('Please make a selection')
    [selection ok]= listdlg('liststring',ns,'selectionmode','single');
end
gradebook = {};
for d=1:selection
sinfo ={'Enter student name','Numerical grade for 1st exam (out of 100):','Numerical grade for 2nd exam (out of 100):','Numerical grade for 3rd exam (out of 100):'};
info=inputdlg(sinfo);
gradebook= [gradebook info];
end
for d=1:selection
    average(d)=mean(str2double(gradebook(2:end,d)));
end
[value where]=max(average);
name=gradebook {1,where};
msg=sprintf('%s has the highest average. Average grade is %.2f%%',name,value);
ok2=msgbox(msg);
waitfor(ok2)
ques=questdlg ('Do you want to repeat the program?');
end

我的问题是如果用户按“取消”而不是“确定”,我该如何重新显示inputdlg()?

非常感谢! :)

1 个答案:

答案 0 :(得分:2)

您应该让用户有机会在任何步骤取消该程序。可能在询问他/她是否真的要取消并可能丢失输入的数据。

无论如何,这是你如何做到的:

info = {};
while isempty(info)
    info=inputdlg(sinfo);
end

此外,您不需要两个listdlg语句:

ok = 0;
while ok == 0
    [selection ok] = listdlg('liststring',ns,'selectionmode','single');
end