错误:未处理的异常:System.FormatException:输入字符串的格式不正确

时间:2019-02-11 19:33:29

标签: c#

在键入以下代码时,控制台会打开,我可以输入一个值,但是当我按下一个键时,.NET崩溃并且控制台关闭

我尝试仅在“文本”开头输入“文本” +输入和$

using System;

namespace Programmeren1Week2
{
    class Program
    {
        const double BTW = 0.21;

        static void Main(string[] args)
        {
            Console.WriteLine("Geef prijs:");
            Console.ReadLine();

            double invoer = double.Parse(Console.ReadLine());
            double metBTW = invoer * BTW;

            Console.WriteLine($"De prijs is {0}:" + invoer, "de btw is {1}:" + BTW, "Totaalprijs is {2}: " + metBTW);
            Console.ReadKey();

        }
    }
}

4 个答案:

答案 0 :(得分:1)

我设法通过在您要求输入的文本值中输入来重现您的问题。如果是

  

我尝试仅在“文本”开头输入“文本” +输入和$

您的意思是提示输入时正在键入“文本”,这就是您的问题。

您的invoer变量是双精度型,因此它不能接受字符串作为输入。尝试输入数字值,看看是否可以解决您的问题。


除了这个问题,还有另一件事需要修复。

正如其他一些人指出的那样,您设置的字符串格式不正确。如果您解决了原始错误,这将导致问题。要解决此问题,请将该行更改为:

Console.WriteLine($"The prize is {invoer}, the VAT is {BTW}: Total price is {metBTW}: ");

这应该产生一个正常运行的程序。

答案 1 :(得分:0)

可能是您输入的字符串无法在ReadLine调用中解析为double。

如果提出此替代解决方案来解决此问题。

 Console.WriteLine("Geef prijs:");


  if(double.TryParse(Console.ReadLine(), out double invoer))
  {

   double metBTW = invoer * BTW;

   Console.WriteLine($"De prijs is : {invoer} , de btw is : {BTW} , otaalprijs is : {metBTW}");

   Console.ReadKey();

}
else 
{
  Console.WriteLine("Bad input");
}

答案 2 :(得分:0)

使用TryParse代替使用Parse。 (对于有效值,它返回true,对于无效值,它返回false。)像这样使用:

double number;
if (Double.TryParse(Console.ReadLine(), out number))
{  
   // normal flow
}
 else
{
   // bad input (not a double, request another input)
}

答案 3 :(得分:-2)

尝试一下

  

Console.WriteLine(String.Format(“ De prijs是{0}:de btw是{1}:Totaalprijs是{2}:”,invoer,BTW,metBTW));

  

Console.WriteLine($“ De prijs是{invoer}:de btw是{BTW}:   Totaalprijs是{metBTW}:“);