2015-12-06 230 views
0

正在處理項目,並且必須確保文本框中的輸入符合數字要求,但也不等於零。到目前爲止,這是我的代碼:Matlab檢查輸入是否爲非零

function minValue_Callback(hObject, eventdata, handles) 
% hObject handle to edit10 (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 

% Hints: get(hObject,'String') returns contents of edit10 as text 
%  str2double(get(hObject,'String')) returns contents of edit10 as a  double 
user_entry_X = str2double(get(hObject,'string')); 
if isnan(user_entry_X) 
errordlg('You must enter a numeric value','Error!','modal') 
uicontrol(hObject) 
return 
end 

另一個問題是,我有兩個文本框,minValue和maxValue。我怎樣才能確保maxValue > minValue的數據? (值在用於循環,我想手之前檢查並顯示錯誤會更好。)

+1

你的問題是什麼?問題在哪裏實施? – Daniel

+0

@丹尼爾問題是如何確保輸入不爲零,但也是數字。是否有可能從不同的功能或按鈕按下來調用此CallBack? – Annabelle

+0

@Link對於第二部分,在maxValueText_callback和minValueText_callback中,爲什麼不檢查極限,並根據剛更改的當前值調整另一極限? –

回答

1

所以,如果我理解正確的話,你應該改變行:

if isnan(user_entry_X) 
    errordlg('You must enter a numeric value','Error!','modal'); 

是:

if isnan(user_entry_X) || user_entry_X == 0 
    errordlg('You must enter a non-zero numeric value','Error!','modal'); 

對於問題的第二部分,我不明白困難。只需鍵入:

if maxValue > minValue 
    ... 
end 
+0

對於第二部分,我需要檢查它們何時輸入到任一文本框中,不確定如何執行此操作。 – Annabelle

+1

'isnan'是必需的,因爲'str2double'返回無效輸入。 'isnumeric'爲'NaN'返回'true','str2double'根據定義只返回標量數值(用於字符串輸入)。 – horchler

+0

@horchler你有什麼想法然後呢? – Annabelle

0

你可能想使用

errordlg('You must enter a numeric value','Error!','modal') 
h = uicontrol(hObject) 
uiwait(h) 

所以錯誤對話保持開放,直到用戶確認。 (我陷入陷阱圈套,可能來自Windows編程,'模態'造成這種行爲。)