第四課輸入時的細節處理——C#計算器程式設計教學
第一課中講到,算式是有規矩的,不能任何輸入都作有效輸入,所以判斷是否有效輸入,這是第三課講到了AddCaclString方法的負責處理。今天就專門講這個方法。
先上程式碼:
這裡說到了要新增私有變數,就是協助判斷輸入的有效性和順序的嚴謹性。private void AddCaclString(bool isDecimal, bool isOP, string str) { if (!isDecimal && !isOP) { if (str == "0" && CaclString == "0") { return;//這是什麼情況?你自己想。 } CaclString += str; isOPAdded = false;//你得先新增Cacl的私有變數 } else { if (isDecimal) { if (!haveDecimal) { CaclString += str; haveDecimal = true;//你得先新增Cacl的私有變數 isOPAdded = false; } } else { if (isOP && CaclString != "") { if (!isOPAdded) { CaclString += str; isOPAdded = true; haveDecimal = false; } else { CaclString = CaclString.Remove(CaclString.Length - 1, 1) + str;//這又是什麼情況? isOPAdded = true; haveDecimal = false; } } } } }
所謂私有,就是外界不知道的,自己在操作過程中定義的變數是為了協助判斷。這種程式設計思想必須瞭解和掌握,畢竟就是WinForm中的每一個控制元件都會有很多控制私有變數,程式設計就是要有這種新增輔助變數的基本素養。private bool haveDecimal = false;//是否已輸入小數點。 private bool isOPAdded = false;//是否已輸入操作符。
那麼這兩個變數是幹什麼用的呢?
算式輸入小數點、數字、運算子,你得判斷現在輸入在什麼位置,是還是繼續輸入數字,還是輸入小數點,本數字已經輸入小數點了又再次輸入小數點當然是作無效判斷,那麼輸入了操作符,意思就是輸入下一個數字,那麼又進入下一輪判斷,如此迴圈而已。
這段程式解決了輸入判斷有效性的問題,如果讓你自己寫,會是個什麼樣子?可能還有漏洞,比如我只是解決了算式開頭輸入0後不能輸入其它數字的問題,但中間 數字沒有解決。這其實無關程式執行結果,所以我沒有再考慮這個問題。
第四課結語。
判斷往往需要輔助變數,善於新增輔助變數是程式設計師的基本能力。
相關推薦
第四課輸入時的細節處理——C#計算器程式設計教學
第一課中講到,算式是有規矩的,不能任何輸入都作有效輸入,所以判斷是否有效輸入,這是第三課講到了AddCaclString方法的負責處理。今天就專門講這個方法。 先上程式碼: private void AddCaclString(bool isDecimal,
第三課輸入和顯示——C#計算器程式設計教學
首先完成輸入功能。前面講到了那個語句cacl.EnterString(key);那麼,方法EnterString(string str)是必須有的,而且是public。 最先想到的迴圈語句是什麼呢?想想介面上的Button的Text,都是不同的,但有隻是輸入的,有功能鍵的,
第十四課功能鍵之取反——C#計算器程式設計教學
為了實現取反,影響的面很大,但也不得不硬著頭皮弄啊。根據程式設計原則,先要進行分析。算式中出現負數很正常對吧,出現負數怎麼個樣子呢?比如-8,它在算式裡是怎麼表示的?是“(-8)”。大家有沒有想到,其中這個“-”,我們在前面的程式裡是不是一個運算子?當然是的,所以首先一個,SetOp方法要修改。其次,你們有沒
第十三課功能鍵之開根號——C#計算器程式設計教學
首先說明一點,這裡實現的是整個算式結果開根號,而不是輸入項數的開根號。所以,先計算,再開根號。程式碼如下: private void Square() { try {
第十課等於之呼叫關鍵呼叫——C#計算器程式設計教學
操作集合生成方法加呼叫生成方法,還沒有真的進行等於操作。這節課就是本程式的“等於”的程式碼如何寫?先期做了很多基本功,都是圍繞它來做的基礎工作。完成了基礎工作,總體工作就容易多了,不就是再次呼叫嗎?不全對。你考慮過計算嗎?還有一個計算方法,這是核心!集合真的生成了,接著其實
Coursera Deep Learning 第四課 卷積神經網路 第二週 程式設計作業 殘差神經網路 Residual Networks
Coursera Deep Learning 第四課 卷積神經網路 第二週 程式設計作業 殘差神經網路 Residual Networks Welcome to the second assignment of this week! You will l
第十五課程式碼複用——C#計算器程式設計教學
新手和老手的區別之一,就是看程式碼的簡潔程度。簡潔的辦法之一就是程式碼複用。看著我前面圍繞等於寫了至少5個方法,其實這其中有方法也由另外的方法呼叫,這就達到了複用的目的。舉個例子,上節課講到的取反,它的程式碼就用到了SetCaclLists方法。我不能在caclString
第二十課先乘除後加減——C#計算器程式設計教學
不少人念念不忘四則運算的運算子優先順序,而Windows7的計算器基本型也沒有實現它。 其實根據我的算式運算解決思路,其實就查詢有乘除的項,先加好(物件加),然後做加減。 程式碼修改如下: private string RunCaclLists()
C語言基礎-第四課-數組與字符串
cat ant 隨機數 打印 第一個 長度 stdin 有效 borde 1 數組 1.1 一維數組定義與使用 int array[10];//定義一個一維數組,名字叫array,一共有10個元素,每個元素都是int類型的 array[0]
Thrift第四課 連接中斷異常處理
while循環 copy app cal 客戶端 pan all per 機制 場景 Thrift框架采用了異常處理機制,當客戶端異常斷開連接,服務端這個時候嘗試發送數據給客戶端,Thrift庫會拋出異常,導致進程中斷。這種情況是非常正常的,服務器端應該捕獲異常的發生,但是
C#程式設計基礎第四課2:使用if語句、if-else語句、多重if語句、巢狀if語句完成的C#控制檯小程式
知識點:基本算術運算、簡單if語句、if-else語句的練習。利用語句完成簡單C#控制檯程式。 1、運用if-else語句,判斷使用者輸入的年份是否是閏年 static void Main(string[] args) { /*
C#程式設計基礎第四課:c#中的邏輯運算子、多重if語句、巢狀if語句的使用
知識點:邏輯運算子、多重if語句、巢狀if語句 1、邏輯運算子 練習1:邏輯或、邏輯與運算子的使用 本次計算機考試成績規定:筆試成績等於100分且機試成績大於等於60分,或筆試成績大於等於60分且機試成績等於100分, 輸出“成績優秀”,&
斯坦福大學-自然語言處理入門 筆記 第四課 語言模型
一、介紹N-grams 1、概率語言模型 對每個句子給出一個概率,用以判斷機器翻譯中哪個句子是最佳的選擇,拼寫校準中哪個句子可能出現錯誤。 目標:計算句子或者是一系列單詞的概率
C語言第12課——輸入&輸出
輸入 意味著要向程式填充一些資料。 輸入可以是以檔案的形式或從命令列中進行。 C 語言提供了一系列內建的函式來讀取給定的輸入,並根據需要填充到程式中。 輸出 意味著要在螢幕上、印表機上或任意檔案中顯示一些資料。 C 語言提供了一系列內建的函式來輸出資料到
C語言筆記 第四課 型別轉換
第四課 型別轉換 型別之間的轉換 C語言中的資料型別可以進行轉換 強制型別轉換 隱式型別轉換 強制型別轉換 強制型別轉換的語法 (Type)var_name; (Type)value; 強制型別轉換的結果 目標型別能夠容納目標值:結果不變 目標型別不能容納目標值:結果將產生截斷
第四課:vi編輯器和c語言
vi編輯器 vi編輯器的三種模式: 命令模式:1,從命令模式切換至插入模式 &nbs
C語言基礎教學——迴圈結構之for迴圈(第四課)
C語言中的迴圈結構分為三類: 1、for()迴圈 2、while()迴圈 3、do while()迴圈 何為迴圈:程式自動重複某幾個語句 1、for()迴圈,最常用的迴圈 語法結構: for(語句1;語句2;語句3){ 迴圈體 } 語
斯坦福大學自然語言處理第四課 語言模型(Language Modeling)筆記
一、課程介紹 斯坦福大學於2012年3月在Coursera啟動了線上自然語言處理課程,由NLP領域大牛Dan Jurafsky 和 Chirs Manning教授授課:https://class.coursera.org/nlp/ 以下是本課程的學習筆記,以課程PPT/
c++程式設計線上筆試中遇到多個輸入時的處理案例
1,問題描述。 洗牌在生活中十分常見,現在需要寫一個程式模擬洗牌的過程。 現在需要洗2n張牌,從上到下依次是第1張,第2張,第3張一直到第2n張。首先,我們把這2n張牌分成兩堆,左手拿著第1張到第n張(上半堆),右手拿著第n+1張到第2n張(下半堆)。接著就開始洗牌的過程,
第四課
align .com box enter body button 守護 .html radi <body> <table width="100%" border="0" cellspacing="0" cellpadding="0">