作者ssas1115577 (Holey)
看板C_Sharp
标题Re: [问题] Parse,TryParse,与字串转换问题
时间Thu Feb 1 09:54:20 2018
※ 引述《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://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1517450067.A.F7A.html
※ 编辑: ssas1115577 (218.173.3.123), 02/01/2018 09:57:11
1F:推 aa12783509: 谢谢你 至於错误讯息的话 我试试看有没有办法用出来 02/01 13:45
2F:→ aa12783509: 要不然就是回家用电脑附上 02/01 13:45
3F:推 gundan: 或是你把 TextBox1.Text 的原始资料附上应该也可以 02/01 17:43
4F:推 aa12783509: 不好意思 刚回到家 在下面补上图片 谢谢帮忙解答 02/01 20:12
6F:→ aa12783509: 在double.Parse的括号里面 我有加双引号也是不行 02/01 20:13
7F:→ aa12783509: 因为我一开始看资料她是用"数字" 他可以直接跑出来 02/01 20:13
8F:→ aa12783509: 我的想法是 应该是要放boxtxt或者是去抓TextBox的值吧 02/01 20:14
9F:→ aa12783509: 还是那只能放明确的字串 无法使用boxtxt,TextBox这类 02/01 20:16
10F:推 aa12783509: 再补充问一个好了 在程式码的第一行 02/01 20:19
11F:→ aa12783509: string boxtxt = TextBox1.text 这後面有需要加入 02/01 20:19
12F:→ aa12783509: .ToString(); 嘛!? 有听说 如果都没有给他值的话 02/01 20:23
13F:→ aa12783509: 好像这部分就可以不用加的样子!? 02/01 20:23
14F:→ aa12783509: 那我想要问一下 我这样的程式码 照我正确的方法去跑 02/01 20:24
15F:→ aa12783509: 为什麽一开始打开网页 他摄氏温度就会有一个32在那边? 02/01 20:24
16F:→ aa12783509: 在还没有输入值的状态下 如果我提供的程式码 02/01 20:24
17F:→ aa12783509: 或者是照片不够详细 我可以撷取多一点部分 02/01 20:25
18F:推 Laluth: 你是不是写在Page_Load里 而且没有设定初始值 02/01 23:02
19F:→ aa12783509: 对 我是写在Page_Load里面没错 初始值是指? 这部分 02/02 08:20
20F:→ aa12783509: 我应该是没有做到没错不好意思这部分比较不了解! 02/02 08:20
21F:→ vi000246: 你下个中断点用即时运算视窗观查变数 02/02 08:37
22F:→ vi000246: 就能知道有没有符合格式了 02/02 08:37
23F:推 gundan: 错误出现的时候你把滑鼠移到TextBox1.text的地方就可以 02/02 10:05
24F:→ gundan: 看到当时的值是什麽 02/02 10:05
25F:→ gundan: TextBox1.text的型态本来就是string了不需要ToString 02/02 10:06
26F:推 gundan: 初始值就是在程式一开始就设定好值给他 02/02 10:09
27F:→ gundan: Page_Load其实是初始化做完之後才会跑到 02/02 10:09
28F:→ gundan: 所以你出错的地方textBox.text应该是空字串 所以出错 02/02 10:10
29F:推 aa12783509: 谢谢您们 我找到问题点了 今天有看到一个表格比较详 02/02 15:16
30F:→ aa12783509: 细的表格介绍 提到 一开始是String Empty如果是使用T 02/02 15:16
31F:→ aa12783509: ryParse因为是错误的 所以就会跑out 变数 但是Parse 02/02 15:16
32F:→ aa12783509: 没有给他初始值 是空的 就是我上面跳出来的错误讯息 02/02 15:16
33F:→ aa12783509: 输入字串错误 又因为放在Page_Load一开始就读取了所 02/02 15:16
34F:→ aa12783509: 以要导致出现那个错误讯息 02/02 15:16