参数错误c#

时间:2009-05-26 20:10:21

标签: c#

我正在做一本书中的例子:Herbert Schildt撰写的完整参考文献C#3.0。它是关于使用参数在Console.WriteLine中编写的。这是一个例子: 我尝试了这个但是我收到了一个错误:

Project1.exe has encountered a problem and needs to be close. We are sorry for the inconvenience. Please tell Microsoft about this problem. Send Error Report or Don't Send. And if I click, I get another error in the command prompt. "Unhandled Exception: System.Format.Exception input string was not in a correct format. 
at System.Text.StringBuilder.AppendFormatError()
at System.Text.StringBuilder.AppendFormat(IFormatProvider provider,String Format, Object[]args)
at  System.IO.TextWriter.WriteLine(String format, Object arg0)
at  System.IO.TextWriter.SyncTextWriter.WriteLine(String format, Object arg0)
At Example2.Main() in D:\myPath

我不确定这本书是否有错误或是我的代码? 我很感激你的帮助。感谢

  

指定a的最简单方法之一   格式是描述一个模板   WriteLine()将使用。去做这个,   显示您的格式示例   想要,使用#s标记数字   位置。你也可以指定   小数点和逗号。例如,   这是一个更好的显示方式10   除以3:
  Console.WriteLine(“这里是10/3:{0:#。##}”,10.0 / 3.0);
    此语句的输出如下所示:这是10/3:3.33

顺便说一句,这是我的代码:

   static void Main()
    { 
   Console.WriteLine("Here is 10/3: {0:#.##)", 10);
    }

9 个答案:

答案 0 :(得分:9)

您使用错误的结尾括号作为格式参数。

注意#。后面的括号)##,它应该是}}(花括号)。

另请注意,您已经省略了分部,如果您只是将代码更改为此(也更正了大括号):

static void Main()
{ 
    Console.WriteLine("Here is 10/3: {0:#.##}", 10/3);
}

然后你还会有另一个问题,因为结果会是:

Here is 10/3: 3.00

原因是10/3是整数除法,看看3在3中完全上升了3次,这是3次。

如果你想要浮点除法,将10除以3得到3和1/3,那么你需要确保至少有一个数字是浮点数,因此10.0 / 3会这样做。

答案 1 :(得分:3)

你的代码错了。您在字符串文字中使用了括号而不是大括号。试试这个:

static void Main()
    { 
       Console.WriteLine("Here is 10/3: {0:#.##}", 10);
    }

答案 2 :(得分:2)

)更改为} - 似乎只是一个错字。

答案 3 :(得分:2)

您的格式字符串错误。您有{)

配对

答案 4 :(得分:1)

应该是:

Console.WriteLine("Here is 10/3: {0:#.##}", 10);

当您使用格式时,您应该将其放在{和}

答案 5 :(得分:1)

更正后的代码:

static void Main()    
{    
Console.WriteLine("Here is 10/3: {0:#.##}", 10.0/3);    
}

答案 6 :(得分:1)

在你的字符串的末尾你有a)而不是}

答案 7 :(得分:0)

让我也毫无理由地向所有人发布相同的答案!

在代码中用##}替换##}。

答案 8 :(得分:-1)

那是因为您的代码不正确。

超过1个地方!

(支架和缺少的'/3.0'部分)