1、使用者輸入的基礎知識
在之前的知識介紹過程中,我們一直在用Console.Writeline()的模板功能,將相關內容輸出到螢幕上。
我們之前做的一直是在看程式執行結果,但是我們知道,現實中我們使用的軟體程式都是可以和使用者互動的,接下來我們看看,在控制檯應用程式中,我們怎麼和程式進行簡單的互動:
程式執行的時候是這樣的
此時我們在游標的位置隨便輸入一些內容後敲回車
我們輸入的內容就在第二行輸出啦!
嗯,不過這時會出現一個問題,剛剛的程式碼執行時,我們沒有輸入的時候,介面上只有一個游標,此時對於使用者來說,很可能不知道要幹啥所以我們簡單修改程式碼:
這樣我們看到,當程式執行的時候,介面上有提示資訊,使用者就可以依據提示資訊來進行操作啦。
現在我們回頭看看程式碼,哦,原來接收使用者輸入的命令是Console.ReadLine()呀。這回咱們知道啦,當程式跑到Console.ReadLine()的時候,程式會自動等待接收使用者的輸入。
不過我們仔細的端詳一下程式碼發現,Console.ReadLine()的前面還有一個String str呢,這是宣告一個字串變數的意思。原來我們不僅僅需要用Console.ReadLine()來接收使用者的輸入,而且當接收到使用者的輸入後,需要儲存在一個變數中。然後我們才能透過使用對應的變數,來操作使用者的輸入內容。
原來控制檯程式和使用者互動如此簡單。
那麼我們簡單列舉一下Console類中我們常用的方法
Console.Write 表示向控制檯直接寫入字串,不進行換行,可繼續接著前面的字元寫入。
Console.WriteLine 表示向控制檯寫入字串後換行。
Console.Read 表示從控制檯讀取字串,不換行。
Console.ReadLine 表示從控制檯讀取字串後進行換行。
Console.ReadKey 獲取使用者按下的下一個字元或功能鍵,按下的鍵顯示在控制檯視窗中。
Console.Beep 透過控制檯揚聲器播放提示音。
Console.Clear 清除控制檯緩衝區和相應的控制檯視窗的顯示資訊。
其餘暫時沒接觸過的方法很簡單,大家可以簡單測試。
2、使用者輸入隨之而來的問題
那麼我們知道了如何在控制檯應用程式中控制使用者輸入內容,那麼我們接下來就產生一個想法,不如我們現在做個計算器的雛形吧。比如先做個計算加法的功能試試,於是我們的程式碼是:
這裡我們的想法是,先讓使用者在螢幕上依照提示輸入第一個和第二個數字,當用戶輸入完畢後自動計算並輸出到螢幕上。
但是程式碼敲出來就出問題了,使用者輸入位置就報錯啦。
這思路沒錯呀,因為不是說C#對資料型別要求比較嚴格嘛,那既然我們想實現加法,那就暫時用int的變數接收使用者的輸入不就成啦?
這裡先給出答案,因為Console.ReadLine()預設接收到的結果為字串型別,所以我們是不能用int來接收一個字串的。
不過從邏輯上來看,Console.ReadLine()也的確應當用字串型別來接收,因為我們不知道當用戶輸入的時候,使用者究竟要輸入什麼樣的內容,可能使用者輸入的是數字,也可能輸入的是字元。
那既然有硬性規定,那麼我們修改一下程式碼:
這程式倒是可以正常運行了,但是這結果……
其實不難猜到,當我們用字串來接收使用者的輸入後,得到的也是字串,這時的a+b其實就是將使用者的兩次輸入連線在一起輸入而已,並沒有進行加法運算。(此處有個知識點:我們可以用加號將兩個字串連結!)
這時怎麼辦呢?因為C#對變數的資料型別要求很嚴格,所以要處理這樣的問題,我們就需要資料型別轉換,於是我們修改程式碼:
看!這回程式正常執行啦。
我們用Convert.ToInt32()來將字串型別轉換成int型別。
嗯……先享受一下成果,試試減法、乘法、除法和取餘數。其他的問題明天再說……