gpt4 book ai didi

c# - 未处理的异常 : System. FormatException

转载 作者:行者123 更新时间:2023-11-30 14:50:28 27 4
gpt4 key购买 nike

我在尝试修复简单的 C# 代码时遇到了问题。这是代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MoonGravity
{
class MoonGravity
{
static void Main(string[] args)
{
int number = Convert.ToInt32(Console.ReadLine());
float gravity = (number * 0.17f);
Console.WriteLine(gravity.ToString("F3"));
}
}
}

我需要它输出单个浮点值,所有值都必须精确到浮点后的 3 位精度。我让它工作了,唯一的问题是如果我不输入整数它会崩溃。这就是我得到的错误。

Unhandled Exception: System.FormatException: Input string was not in a correct format. at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) at System.Convert.ToInt32(String value) at MoonGravity.MoonGravity.Main(String[] args) in .... 2015\Projects\ConsoleApplication3\ConsoleApplication3\Program.cs:line 13

我知道问题出在我的 Convert.ToInt32 上,我试图修复它,但我做不到。感谢您的帮助。

最佳答案

如果您希望能够输入非整数,请执行不同的转换。 .NET 中还提供了一些方法,这些方法将尝试将输入解析为另一种类型,如果成功则返回 bool 值,而不是抛出异常。在引入用户输入时使用 try parse 特别方便,而您不知道他们可能会尝试给您什么。然后,您可以优雅地处理可能出现的输入不正确或无效的情况,而不是捕获格式异常等。 MSDN Single Try Parse

static void Main(string[] args)
{
float number;
var success = Single.TryParse(Console.ReadLine(), number);
if(success)
{
float gravity = (number * 0.17f);
Console.WriteLine(gravity.ToString("F3"));
}
else
{
Console.WriteLine("Only numbers allowed.");
}
}

关于c# - 未处理的异常 : System. FormatException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36624758/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com