0

我是 C# 新手,正在控制台应用程序中尝试一些东西。我正在尝试获取用户输入并将其转换为不同的数据类型,然后显示转换后的数据。

到目前为止我试过这个:

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

为什么我会收到此错误?这是转换数据类型的正确方法吗?

编辑:因为我不知道用户可能输入什么我怎么能以某种方式测试它?

4

3 回答 3

3

错误

您收到此错误是因为“4.4”不是表示整数的值,因此无法转换。

以下是一篇很好的文章,可以帮助您更好地了解基本数据类型和典型值:

http://www.tutorialspoint.com/csharp/csharp_data_types.htm

转换

请注意,有几种方法可以处理您在此处设定的将字符串“转换”为另一种数据类型的任务。

例如,对于整数,您可以使用 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 块包装潜在的错误代码可以让您更优雅地处理异常。

于 2013-10-10T10:28:12.933 回答
1

4.4 不是整数,它(也许)是小数。

如果您想接受十进制输入,则需要更改变量的类型,然后改用 Convert.ToDecimal。

于 2013-10-10T10:28:07.843 回答
0

数据类型 test="xyz"; // 数据类型- int, float..

datatype.TryParse(变量,输出测试);

if(test=="xyz") //可以解析

于 2013-10-10T10:36:59.623 回答