C# 类型为';的未处理异常;System.FormatException';使用解析时在mscorlib.dll中发生错误

C# 类型为';的未处理异常;System.FormatException';使用解析时在mscorlib.dll中发生错误,c#,parsing,C#,Parsing,刚进入编程领域的人,必须完成以下任务: 现在,我终于开始思考如何编写代码(见下文),但我一直在得到“mscorlib.dll中发生“System.FormatException”类型的未处理异常。其他信息:输入字符串的格式不正确。”当我尝试运行程序时。它一直在“gross=double.Parse(inputvaluetwo);”上标记,这可能是因为那里没有输入。有人能帮忙吗 using System; using System.Collections.Generic; using System

刚进入编程领域的人,必须完成以下任务:

现在,我终于开始思考如何编写代码(见下文),但我一直在得到“mscorlib.dll中发生“System.FormatException”类型的未处理异常。其他信息:输入字符串的格式不正确。”当我尝试运行程序时。它一直在“gross=double.Parse(inputvaluetwo);”上标记,这可能是因为那里没有输入。有人能帮忙吗

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SalesProgram
{
    class SalesProgram
    {
        static void Main(string[] args)
        {
            double sales;
            double gross;
            double retirement;
            double social;
            double tax;
            string inputvalue;
            string inputvaluetwo;
            string inputvaluethree;
            string inputvaluefour;
            string inputvaluefive;
            string name;
            Console.Write("Enter your name: ");
            name = Console.ReadLine();
            Console.WriteLine("How much did you sell in dollars? ");
            inputvalue = Console.ReadLine();
            sales = double.Parse(inputvalue);
            Console.ReadKey();
            Console.WriteLine("Your gross pay is");
            Console.ReadKey();
            Console.WriteLine(sales * 0.07);
            inputvaluetwo = Console.ReadLine();
            gross = double.Parse(inputvaluetwo);
            Console.ReadKey();
            Console.WriteLine("Your retirement deduction is:");
            Console.WriteLine(gross * 0.15);
            inputvaluethree = Console.ReadLine();
            retirement = double.Parse(inputvaluethree);
            Console.ReadKey();
            Console.WriteLine("Your tax deduction is:");
            Console.WriteLine(gross * 0.18);
            inputvaluefour = Console.ReadLine();
            tax = double.Parse(inputvaluefour);
            Console.ReadKey();
            Console.WriteLine("Your social security deduction is:");
            Console.WriteLine(gross * 0.09);
            inputvaluefive = Console.ReadLine();
            social = double.Parse(inputvaluefive);
            Console.ReadKey();
            Console.WriteLine("Finally, your take-home, or net pay, is:");
            Console.WriteLine(gross-retirement-tax-social);
            Console.ReadKey();
        }
    }
}

这意味着某个地方的字符串值不正确。改用这个:

double retirement ;
if(double.TryParse(inputvaluethree, out retirement) == false)
{
    Console.Write("Error on inputvaluethree : " + inputvaluethree);
}

这意味着您输入的字符串不能转换为双精度

使用以下代码段

if (Double.TryParse(string, out inputvalue))
{
  //do any additional stuff you want to with this inputvalue
}
else
{
  //do what you want to do if conversion fails
}
此重载与Double.Parse(String)方法不同,它返回一个布尔值,指示解析操作是否成功,而不是返回解析后的数值。它消除了在字符串无效且无法成功解析时使用异常处理来测试FormatException的需要

有关更多详细信息,请访问以下链接


使用
double.TryParse()
进行此操作
inputvaluetwo
的值是多少?您的
当前文化是什么?调试代码并告诉我们?inputvaluetwo应该是sales*0.07,然后通过前面提到的parse命令将其转换为double。我不知道CurrentCulture是什么,只上了三周。@AB您能告诉我调试代码时,
inputvaluetwo
的值是多少吗?其他双精度的格式大概是相同的吗?(gross、tax、social)?目标是找出导致此异常的值,因此yes为每个解析实现此模式。