Re: [問題] Parse,TryParse,與字串轉換問題

看板C_Sharp作者 (Holey)時間6年前 (2018/02/01 09:54), 6年前編輯推噓8(8026)
留言34則, 4人參與, 6年前最新討論串2/3 (看更多)
※ 引述《aa12783509 (Ace)》之銘言: : 各位在這邊的大大們 本人最近在外面上課學習網頁的部分 : 剛好有交到C#的部分 有一些問題 : 因為自己以前是學習C++的部分 所以前半段的課程會些許簡單 : 會想要自己去摸索一些自己覺得有興趣的地方 : 雖然不知道要發在Web_Design比較好 還是這邊 : 如有問題 會在下次發問注意的 往後會多在這邊發文麻煩各位了>< : -------------------------------------------------- : 就在今天講到了溫度的轉換例題 這個在C++的部分對我來講很簡單 : 要cin , cout都不是什麼問題 那在C#的部分也想要這樣來搞搞看 : 因為C#的部分是網頁的 不像是有CMD的部分可以自己輸入 : 那好奇心作祟 就使用了TextBox的部分來讓他可以輸入 : 那因為TextBox的值是字串 所以要轉換為數值才能做運算 : 以下這部分是我自己邊找資料、邊想的程式碼 : string boxtxt = TextBox1.Text; : double k, num; : //double num = double.Parse(TextBox1.Text); : double.TryParse(TextBox1.Text, out num); : k = num * 9 / 5 + 32; : Response.Write("華氏溫度 = " + k); : 1.我想要問一下說 這樣的寫法有沒有其他比較好的 : 我有去跑過這樣是可行的 但是不知道這樣算不算是OK的 : 感覺有點像是東湊西湊湊出來的XDDD OK : 2.那我想要問的是我註解的那一行是使用Parse的部分不會有底線的 : 但是實際下去Run了之後 他會顯示什麼給的字串有問題 那這個有辦法解決嘛!? : 括號裡面有試過TextBox1.Text boxtxt 加上雙引號 都是沒有問題 但run就會出現狀況 Debug 時出問題記得要給錯誤訊息別人才知道是什麼問題 我是不清楚版上有多少人會通靈,但我想大部分人應該都不會 不過用 Parse 會出錯誤通常是字串格式錯誤 (非數字格式字串) Empty、空格都會算是錯誤,所以如果要用 Parse 要嘛除非確定輸入一定是正確格式,不然就要先檢查或用 Try Catch 包起來 : 3.有看到有資料說 使用TryParse字串轉換成功 > Parse!? 會比較建議用TryParse嘛!? 如我剛才所說,用 TryParse 或用 Parse 都可以 如果輸入不確定一定是正確格式,那會建議用 TryParse 但若確定一定會是正確格式 或者你在轉換前會自行先檢查、或者用 Try Catch 包起來的話,用 Parse 也沒差 : 4.最後想要問的說 像這種轉換有什麼比較通用的寫法或作法嗎!? 似乎看到蠻多種的! : 因為好像有看到用什麼 int.~~~ 或者是 Int32.~~~~ 好像還有Conver.ToDouble(); double 是雙精準浮點數,int 跟 int32 一樣是整數 如同 double.Parse(input) 會把來源轉成雙精準浮點數資料型態 int.Parse(input) 就是把來源轉成整數資料型態 另外 Convert 類別在 MSDN 寫得很詳細 https://msdn.microsoft.com/zh-tw/library/system.convert(v=vs.110).aspx -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.173.3.123 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1517450067.A.F7A.html ※ 編輯: ssas1115577 (218.173.3.123), 02/01/2018 09:57:11

02/01 13:45, 6年前 , 1F
謝謝你 至於錯誤訊息的話 我試試看有沒有辦法用出來
02/01 13:45, 1F

02/01 13:45, 6年前 , 2F
要不然就是回家用電腦附上
02/01 13:45, 2F

02/01 17:43, 6年前 , 3F
或是你把 TextBox1.Text 的原始資料附上應該也可以
02/01 17:43, 3F

02/01 20:12, 6年前 , 4F
不好意思 剛回到家 在下面補上圖片 謝謝幫忙解答
02/01 20:12, 4F

02/01 20:12, 6年前 , 5F

02/01 20:13, 6年前 , 6F
在double.Parse的括號裡面 我有加雙引號也是不行
02/01 20:13, 6F

02/01 20:13, 6年前 , 7F
因為我一開始看資料她是用"數字" 他可以直接跑出來
02/01 20:13, 7F

02/01 20:14, 6年前 , 8F
我的想法是 應該是要放boxtxt或者是去抓TextBox的值吧
02/01 20:14, 8F

02/01 20:16, 6年前 , 9F
還是那只能放明確的字串 無法使用boxtxt,TextBox這類
02/01 20:16, 9F

02/01 20:19, 6年前 , 10F
再補充問一個好了 在程式碼的第一行
02/01 20:19, 10F

02/01 20:19, 6年前 , 11F
string boxtxt = TextBox1.text 這後面有需要加入
02/01 20:19, 11F

02/01 20:23, 6年前 , 12F
.ToString(); 嘛!? 有聽說 如果都沒有給他值的話
02/01 20:23, 12F

02/01 20:23, 6年前 , 13F
好像這部分就可以不用加的樣子!?
02/01 20:23, 13F

02/01 20:24, 6年前 , 14F
那我想要問一下 我這樣的程式碼 照我正確的方法去跑
02/01 20:24, 14F

02/01 20:24, 6年前 , 15F
為什麼一開始打開網頁 他攝氏溫度就會有一個32在那邊?
02/01 20:24, 15F

02/01 20:24, 6年前 , 16F
在還沒有輸入值的狀態下 如果我提供的程式碼
02/01 20:24, 16F

02/01 20:25, 6年前 , 17F
或者是照片不夠詳細 我可以擷取多一點部分
02/01 20:25, 17F

02/01 23:02, 6年前 , 18F
你是不是寫在Page_Load裡 而且沒有設定初始值
02/01 23:02, 18F

02/02 08:20, 6年前 , 19F
對 我是寫在Page_Load裡面沒錯 初始值是指? 這部分
02/02 08:20, 19F

02/02 08:20, 6年前 , 20F
我應該是沒有做到沒錯不好意思這部分比較不了解!
02/02 08:20, 20F

02/02 08:37, 6年前 , 21F
你下個中斷點用即時運算視窗觀查變數
02/02 08:37, 21F

02/02 08:37, 6年前 , 22F
就能知道有沒有符合格式了
02/02 08:37, 22F

02/02 10:05, 6年前 , 23F
錯誤出現的時候你把滑鼠移到TextBox1.text的地方就可以
02/02 10:05, 23F

02/02 10:05, 6年前 , 24F
看到當時的值是什麼
02/02 10:05, 24F

02/02 10:06, 6年前 , 25F
TextBox1.text的型態本來就是string了不需要ToString
02/02 10:06, 25F

02/02 10:09, 6年前 , 26F
初始值就是在程式一開始就設定好值給他
02/02 10:09, 26F

02/02 10:09, 6年前 , 27F
Page_Load其實是初始化做完之後才會跑到
02/02 10:09, 27F

02/02 10:10, 6年前 , 28F
所以你出錯的地方textBox.text應該是空字串 所以出錯
02/02 10:10, 28F

02/02 15:16, 6年前 , 29F
謝謝您們 我找到問題點了 今天有看到一個表格比較詳
02/02 15:16, 29F

02/02 15:16, 6年前 , 30F
細的表格介紹 提到 一開始是String Empty如果是使用T
02/02 15:16, 30F

02/02 15:16, 6年前 , 31F
ryParse因為是錯誤的 所以就會跑out 變數 但是Parse
02/02 15:16, 31F

02/02 15:16, 6年前 , 32F
沒有給他初始值 是空的 就是我上面跳出來的錯誤訊息
02/02 15:16, 32F

02/02 15:16, 6年前 , 33F
輸入字串錯誤 又因為放在Page_Load一開始就讀取了所
02/02 15:16, 33F

02/02 15:16, 6年前 , 34F
以要導致出現那個錯誤訊息
02/02 15:16, 34F
文章代碼(AID): #1QSdDJzw (C_Sharp)
文章代碼(AID): #1QSdDJzw (C_Sharp)