1. 程式人生 > >unity實現一個簡易的科學計算器

unity實現一個簡易的科學計算器

用UGUI先做一個大概的樣式

類似這樣的,父子關係是這樣的

新建一個CalculateTool指令碼,定義上述的按鈕變數

定義兩個字串用於顯示和分析,定義一個操作符號和優先順序的列表

在Awake方法裡面賦值:

給這些按鈕新增事件:

給運算子號的列表新增值,後面的數代表優先順序

點選數字等按鈕時候需要將點選的資訊新增到顯示和分析的字串中,其中計算平方和立方的字元用 '[' 和 ']'這兩個字元表示,顯示則用輸入法裡的符號顯示。

接下來就是按下等號的時候需要計算: 先判斷如果是空的話不計算,如果括號不匹配的話不計算。

然後利用List這個現成的特別好用的類實現數字和操作符的分析,定義三個列表,緩衝的字串用來判斷如果是有好幾位數字,小數,或者操作符是有很多個字元比如sin這種。

接下來分析字串,將數字和操作符一個個都單獨分開,按照輸入的順序新增到所有的列表中

對於操作符號,會出現sin這種正確的符號,也會有 *( 或者 )+ 這種兩個符號,需要判斷下區分開,括號要單獨分出來,同樣的乘方,三次方也要單獨分出來。最後將等號加進去。

將這些字串都分開後,就是一步步的計算了:如果是數字就數字加入到數字列表中,沒啥操作。

如果這時不是數字就要比較優先順序了,當前優先順序大就將符號直接加到操作符的列表中,然後下一個。如果優先順序小,進行計算,然後將數字刪除,操作符刪除,然後在當前進行下一輪判斷,直到判斷到當前符號為優先順序大的符號或者列表裡不再存在操作符了,結束判斷。

迴圈,如果優先順序大,加到列表

如果優先順序小,計算,將計算的數字符號刪除,將計算結果新增到數字列表

同理在switch中可以寫出其他操作符號的計算方式,比較特殊的是平方立方sin等,他們是對一個數進行操作的

唯一不同的就是括號:

如果是左括號接跳出一次這個迴圈。

額外寫個判斷是否是數字的方法:

這樣基本上一個科學計算器的大概就出現了,其中輸入的方法和計算還有待後續的改進和新增

相關推薦

unity實現一個簡易科學計算器

用UGUI先做一個大概的樣式 類似這樣的,父子關係是這樣的 新建一個CalculateTool指令碼,定義上述的按鈕變數 定義兩個字串用於顯示和分析,定義一個操作符號和優先順序的列表 在Awake方法裡面賦值: 給這些按鈕新增事件: 給運算

實現一個簡易Unity網路同步引擎——netgo

實現一個簡易的Unity網路同步引擎Netgo 目前GOLANG有大行其道的趨勢,尤其是在網路程式設計方面。因為和c/c++比較起來,雖然GC佔用了一部分機器效能,但是出錯概率小了,開發效率大大提升,而且應用其原生支援的協程很容易就能開發出高併發的服務端程式。筆者接觸VR行業兩年有餘,接觸了一些商業unity

javascript的一個簡易利率計算器+js圖像顯示 代碼

貸款 under 格式 principal 定時 request對象 for char 直線 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <

用java實現一個簡易編譯器1-詞法解析入門

new 概念 自加 我們 sta 數字 獲得 () 操作系統 本文對應代碼下載地址為: http://download.csdn.net/detail/tyler_download/9435103 視頻地址: http://v.youku.com/v_show/id_XMT

使用 RxJS 實現一個簡易的仿 Elm 架構應用

inter bject compute 幫助 規律 returns date rgs 個人愛好 使用 RxJS 實現一個簡易的仿 Elm 架構應用

在Android中實現一個簡易的Http服務器

.get json data ESS public 瀏覽器 顯示 getmethod blank 最近遇到一個需求需要在App中創建一個Http服務器供供瀏覽器調用,用了下開源的微型Htpp服務器框架:NanoHttpd,項目地址:https://github.com/Na

Catlike學習筆記(1.1)-使用Unity實現一個鐘表

時間 tor 裏的 csharp 做了 完全 upd 動畫 鏈接 最近發現『Catlike系列教程』覺得內容真的很贊,感覺有很多地方涉及到了我的知識盲點,如果真的可以照著做下來一遍的話應該收獲頗豐。因為教程很長所以逐字翻譯不太可能了(主要是翻譯的太差)。基本上就是把實現的思

實現一個簡易的express中間件

str 修改 clas middle 分享圖片 next 測試 inf 返回 代碼: // 通過閉包實現單例 const Middlewave = (function(){ let instance; class Middlewave{ c

手動實現一個簡易版SpringMvc

版權宣告:本篇部落格大部分程式碼引用於公眾號:java團長,我只是在作者基礎上稍微修改一些內容,內容僅供學習與參考 前言:目前mvc框架經過大浪淘沙,由最初的struts1到struts2,到目前的主流框架SpringMvc,並逐漸區域佔領市場主流穩定狀態,由於其背後強大的Spring家族提供了一系列高可用

SSM+WebSocket實現一個簡易網頁版通訊工具

編譯環境:jdk1.8 , tomcat8.0+ , IDEA 這裡主要講一下websocket的資訊傳遞,以如何實現多人實時線上聊天為例: websocket主要的三個類 MyWebSocketConfig主要負責配置websocket的處理器和握手攔截器 MyHandSha

vue實現一個簡易Popover組件

方法 height 自定義 它的 direct val code button update 概述 之前寫vue的時候,對於下拉框,我是通過在組件內設置標記來控制是否彈出的,但是這樣有一個問題,就是點擊組件外部的時候,怎麽也控制不了下拉框的關閉,用戶體驗非常差。 當時想到的

HTML、CSS、JavaScript 實現一個簡單的計算器

計算器效果圖: 程式碼如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>計算器</title> </head

使用WX包實現一個簡易的古詩文欣賞軟體

寫在前面 用python的WX包來實現一個簡易的古詩文閱覽軟體,幫助自己欣賞古詩文,軟體如下: 所有顯示的古詩文均來自爬蟲欄中的《python爬取古詩文網站詩文一欄的所有詩詞》爬到的資訊,現在將他們隨機展示出來。 開始正文 1.展示匯入的包 在此,主要用到3個包,分別為

Android下實現一個簡單的計算器原始碼

下面的內容是關於Android下實現一個簡單的計算器的內容。 import android.app.Activity; import android.os.Bundle;import android.view.View;import android.widget.Button;import android.w

【 C 】轉移表(理論與實踐)(實現一個簡單的計算器

首先借用《C 與指標》上對於轉移表的解釋,然後我們自己程式設計序操作下: 轉移表最好用個例子來解釋。下面的程式碼段取自一個程式,它用於實現一個袖珍式計算器。程式的其他部分已經讀入兩個數(op1和op2

DirectX11 With Windows SDK--13 動手實現一個簡易Effects框架、陰影效果繪製

前言 到現在為止,所有的教程專案都沒有使用Effects11框架類來管理資源。因為在D3DCompile API (#47)版本中,如果你嘗試編譯fx_5_0的效果檔案,會收到這樣的警告: X4717: Effects deprecated for D3DCompiler_47 在未來的版本中,D3DComp

Netty+Websocket 實現一個簡易聊天室

後臺程式碼 /** * 服務端 */ public class ChatServer { public static void main(String[] args) throws Exception { int port=8080; //服務端預設埠 new Ch

實現一個簡易的vue的mvvm(defineProperty)

這是一個最近一年很火的面試題,很多人看到這個題目從下手,其實查閱一些資料後,簡單的模擬還是不太難的: vue不相容IE8以下是因為他的實現原理使用了 Object.defineProperty 的get和set方法,首先簡單介紹以下這個方法 我們看到控制檯

Android 實現一個簡易橫向流式佈局

SimpleFlowLayout:一個簡易的橫向流式佈局,只實現核心功能,使用者可自行擴充套件   Demo圖片如下所示: SimpleFlowLayout直接繼承自ViewGroup,主要負責

利用HashMap,自己實現一個簡易版的HashSet

簡介 HashSet是常用的容器類,主要特徵表現為不可重複性 其內部實現主要用到了HashMap,利用了HashMap的鍵的不可重複性 使用HashMap的鍵作為其元素,同時令HashMap的所有的