2012-11-12 27 views
0

我正在用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 

非常感謝您的幫助!

+0

看起來好像你正試圖在這一步完成所有事情,當事情沒有奏效的時候,你不能說出什麼是壞的。我建議你重做你的代碼。確定解決問題所需的步驟,並且每行處理1步,而不是幾行。然後,當事情不起作用時,您可以測試各條線,以查看事情正在破裂的地方。 – slayton

+0

我只是不明白(isNumber(i))是如何工作的。它如何看待我的輸入是否從最終的數字?我知道如果我輸入56 + 54,那麼它是5,但是然後是5(5)。 – Neone

+0

我意識到:D isNumber是從0到9的ivedlauktxt,我們看它是否是數字,然後長度減1 :) – Neone

回答

0

ivedlauktxt(end)給人的最後一個字符

關於第二個想法,你可能想看看str2num()

編輯:

鑑於您正在尋找這樣做的具體的事情可能是一個辦法做到這一點:

isNumber = (ivedlauktxt >= '0') & (ivedlauktxt <= '9') 
i=length(ivedlauktxt); %Initialize loop 
while i>0 && (isNumber(i)) 
    if isNumber(i) 
     i=i-1; 
    end 
end 

str2num(ivedlauktxt(i+1:end)) 

沒有測試它,但它應該讓你在那裏!

+0

我不需要最後一個字符,但最後一個數字,直到符號*,/,+, - 。 例如我輸入65 + 51,當推罪,51必須放在罪孽括號和結果將是65 +信德(51) – Neone

+0

更新帖子找到結束,直到第一個非數字。如果你只想排除這幾個標誌,應該很容易改變。 –

+0

不工作。獲取這些錯誤: ||的操作數和&&運算符必須是可轉換爲邏輯標量值的 。 ManoSkaiciuokle2錯誤> pushbutton40_Callback (line 355) isNumber =(ivedlauktxt> ='0')&& (ivedlauktxt <='9'); gui_mainfcn錯誤(第96行) feval(varargin {:}); ManoSkaiciuokle2錯誤(第17行) gui_mainfcn(gui_State,varargin {:});而評估 錯誤 @(hObject,EVENTDATA)ManoSkaiciuokle2( 'pushbutton40_Callback',hObject,EVENTDATA,guidata(hObject)) 錯誤uicontrol修正回調 – Neone

相關問題