HackerRank 30天编码:为何需用Convert处理输入?
HackerRank 30天编码挑战Day2:类型转换疑问解答
我的代码
int i = 4; double d = 4.0; string s = "HackerRank "; int a = 12; double b = 4.0; string c = "is the best place to learn and practice coding!"; a = Convert.ToInt32(Console.ReadLine()); b = Convert.ToDouble(Console.ReadLine()); c = Console.ReadLine(); Console.WriteLine(i + a); Console.WriteLine((d + b).ToString("F1")); Console.WriteLine(s + c);
我的疑问
我无法理解为何要使用Convert类,为什么要将Console.ReadLine()的结果转换类型后赋值给变量?
题目背景
目标
今日我们讨论数据类型,可查看教程标签获取学习资料和教学视频!
任务
完成编辑器中的代码,变量i、d、s已声明并初始化。你需要:
- 声明3个变量:一个int类型、一个double类型、一个string类型。
- 从标准输入读取3行输入,按输入格式顺序初始化你的变量。
- 使用运算符执行以下操作:
- 在新行打印i与你的int变量之和。
- 在新行打印d与你的double变量之和,保留一位小数。
- 将s与你读取的输入字符串拼接后打印在新行。
注意:如果使用的语言不支持用+拼接字符串(如C语言),可直接在同一行连续打印两个变量,需先打印编辑器提供的字符串,再打印你读取的输入字符串。
输入格式
- 第一行是需与i相加的整数;
- 第二行是需与d相加的浮点数;
- 第三行是需与s拼接的字符串。
输出格式
- 第一行打印两个整数之和;
- 第二行打印两个浮点数之和(保留一位小数);
- 第三行打印拼接后的字符串。
示例输入
12 4.0 is the best place to learn and practice coding!
示例输出
16 8.0 HackerRank is the best place to learn and practice coding!
解释
整数4与12相加得16;
浮点数4.0与4.0相加得8.0;
将"HackerRank "与输入字符串拼接得到最终结果。
注意:若直接将示例值赋值给变量而非读取标准输入,将无法通过挑战。
解答
核心原因很直接:Console.ReadLine()的返回值永远是字符串类型——不管你输入的是整数、小数还是文字,它都会把输入内容当成一串字符读进来。
而你的变量a是int(整数)类型、b是double(浮点数)类型,C#是强类型语言,不同数据类型之间不能直接赋值,也不能直接做数学运算。比如你输入的12,读进来是字符串"12",如果直接赋值给int类型的a,编译器会报错;要是直接拿这个字符串和int类型的i做加法,同样会报错。
所以必须用Convert.ToInt32()把输入的字符串转换成整数类型,用Convert.ToDouble()把输入的字符串转换成浮点数类型,这样才能和已有的i、d进行加法运算。
至于变量c本身就是string类型,和Console.ReadLine()的返回类型一致,所以直接赋值就行,不需要转换。
内容的提问来源于stack exchange,提问作者fırtına necati
相关产品推荐
相关产品推荐

