我正在用matlab製作計算器,並且我想從編輯框中取出最後一個輸入編號,並在按下sin按鈕時將其放入sind()括號中。怎麼做?我搜索了幾個小時,但沒有發現任何東西。從編輯框中獲取最後一個數字Matlab
現在我的罪按鈕的代碼看起來像這樣:
% --- Executes on button press in pushbutton40.
function pushbutton40_Callback(hObject, eventdata, handles)
inpfieldtxt = get(handles.edit1,'string');
if(strcmp(inpfieldtxt,'0.')==1)
set(handles.edit1,'String','sind(');
else
inpfieldtxt=strcat(inpfieldtxt,'sind(');
set(handles.edit1,'String',inpfieldtxt)
end
它只是插入「信德(」到編輯框中,然後我需要手動輸入號碼閉架「)」。
我想這個按鈕作爲Windows 7計算器的罪過按鈕作出反應。它也得到最後一個數字並將其置於罪惡(這裏)。
我知道了! 這裏是解決方案:
% --- Executes on button press in pushbutton40.
function pushbutton40_Callback(hObject, eventdata, handles)
inpfieldtxt = get(handles.edit1,'string');
if(strcmp(inpfieldtxt,'0.')==1)
set(handles.edit1,'String','sind(');
else
isNumber = (inpfieldtxt >= '0') & (inpfieldtxt <= '9');
i=length(inpfieldtxt);
while (i > 0) && (isNumber(i))
if isNumber(i)
i = i-1;
end
end
lastnmb = inpfieldtxt(i+1:end);
inpfieldtxt = inpfieldtxt(1:i);
set(handles.edit1,'String',[inpfieldtxt,'sind(',lastnmb,')']);
end
非常感謝您的幫助!
看起來好像你正試圖在這一步完成所有事情,當事情沒有奏效的時候,你不能說出什麼是壞的。我建議你重做你的代碼。確定解決問題所需的步驟,並且每行處理1步,而不是幾行。然後,當事情不起作用時,您可以測試各條線,以查看事情正在破裂的地方。 – slayton
我只是不明白(isNumber(i))是如何工作的。它如何看待我的輸入是否從最終的數字?我知道如果我輸入56 + 54,那麼它是5,但是然後是5(5)。 – Neone
我意識到:D isNumber是從0到9的ivedlauktxt,我們看它是否是數字,然後長度減1 :) – Neone