我是C#的新手,正在尝试控制台应用程序中的一些东西。我试图获取userinput并将其转换为不同的数据类型,然后显示转换后的数据。
到目前为止我试过这个:
string userInput;
int intInput;
float floatInput;
Console.WriteLine("Please enter a number: ");
userInput = Console.ReadLine();
intInput = Convert.ToInt32(userInput);
floatInput = (float)intInput;
Console.WriteLine("String input: "+userInput+"\n");
Console.WriteLine("Integer input: " + intInput + "\n");
Console.WriteLine("Float input: " + floatInput + "\n");
它在视觉工作室中没有给我任何错误,但是当我运行程序时它喜欢整数并显示它们。但是,当我输入4.4
这样的数字时,它会停止该程序,并为此行FormatException was unhandled
发出警告inInput = convert.ToInt32(userInput);
。
我的本地窗口显示:
userInput = "4.4"
intInput = 4
floatInput = 4.0
为什么我收到此错误?这是转换数据类型的正确方法吗?
编辑:因为我不知道用户可能输入了什么,我怎么能以某种方式测试它?
答案 0 :(得分:3)
错误强>
您收到此错误,因为“4.4”不是表示整数的值,因此无法转换。
以下是一篇很好的文章,可以更好地理解基本数据类型和典型值:
http://www.tutorialspoint.com/csharp/csharp_data_types.htm
<强>加工强>
请注意,有几种方法可以处理您在此处将字符串“转换”为另一种数据类型所要实现的任务。
对于Integers,例如,您可以使用TryParse:
http://msdn.microsoft.com/en-us/library/f02979c7.aspx
TryParse不会引发异常并破坏您的应用程序。
处理例外情况
另请注意,这里的“未处理”意味着您的代码无法使用适当的Try Catch块来处理此类错误:
http://msdn.microsoft.com/en-us/library/vstudio/0yd65esw.aspx
使用Try Catch块包装可能有错误的代码可以让您更优雅地处理异常。
答案 1 :(得分:1)
4.4不是整数,它(可能)是小数。
如果您想接受十进制输入,则需要更改变量的类型,然后使用Convert.ToDecimal。
答案 2 :(得分:0)
datatype test =“xyz”; // datatype- int,float ..
datatype.TryParse(variable,out test);
如果(测试== “XYZ”) //解析可以完成