我在MATLAB中创建一个GUI,它将接受来自用户的数字输入,并相应地对它们进行计算。我想能够在用户输入字母而不是数字时创建错误对话框。到目前为止,我有一些代码来显示错误消息:
ed = errordlg('Please enter numbers only','Error'); set(ed, 'WindowStyle', 'modal');uiwait(ed);
这是主要代码的一部分,我想将错误消息集成到:
function roofspace_Callback(hObject, eventdata, handles)
aSpace = str2double(get(hObject,'String')); %This is the user entered value for the roofspace.
set(hObject,'UserData',aSpace);
if aSpace==0 %If aSpace does not have anything then nothing is enabled.
set(findall(handles.uipanelFunds, '-property', 'enable'), 'enable', 'off');
set(findall(handles.uipanelPanels, '-property', 'enable'), 'enable', 'off');
set(findall(handles.uipanelUsage, '-property', 'enable'), 'enable', 'off');
set(handles.calculate,'enable','off');
set(hObject,'String','');
else %If aSpace hs a value then this enables the rest of the inputs.
set(findall(handles.uipanelFunds, '-property', 'enable'), 'enable', 'on');
set(findall(handles.uipanelPanels, '-property', 'enable'), 'enable', 'on');
set(findall(handles.uipanelUsage, '-property', 'enable'), 'enable', 'on');
set(handles.calculate,'enable','on');
end

修改 总之,我需要弄清楚如何将我的错误消息代码集成到这段代码中,以便检查用户是否输入了数字,否则我想要显示一条错误消息。此时,无论用户输入了什么,代码都会显示错误消息。
答案 0 :(得分:0)
您可以按如下方式查看:
我将aSpace = str2double(get(hObject,'String'));
分成两个语句(只是因为它更容易解释):
str = get(hObject,'String');
aSpace = str2double(str);
我可以想到两个错误案例:
str = 'abc'
。aSpace
= NaN str = '2 + 3i'
。aSpace
= 2.0000 + 3.0000i 使用下面的if
语句,以检查是否aSpace
不是的的NaN 强>,<强> Inf文件下,的 -Inf 并不是复杂号码:
is_ok = isfinite(aSpace) && isreal(aSpace);
if (~is_ok)
%Handle error...
end