如何解决“输入字符串格式不正确”的问题?

本文关键字:不正确 格式 问题 字符串 输入 何解决 解决 | 更新日期: 2023-09-27 18:06:52

这是我的第一个项目之一,它甚至抄袭了一本丹麦初学者的书,我反复检查了几次,它们是一样的,但似乎仍然有一个错误。

using System;
namespace Amount_and_price
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Write the price here  ");
            String text = Console.ReadLine();
            double price = Convert.ToDouble(text);
            Console.WriteLine("Write the amount here   ");
            text = Console.ReadLine();
            int quantity = Convert.ToInt32(text);
            double amount = price * quantity;
            double vat = amount * 0.25;
            double total = amount + vat;
            Console.WriteLine("{0, -15} { 1, 10:F}", "Pris på varen", price);
            Console.WriteLine("{0, -15} { 1, 10:D}", "Antal styk", quantity);
            Console.WriteLine("{0, -15} { 1, 10:F}", "Pris eks. moms", amount);
            Console.WriteLine("{0, -15} { 1, 10:F}", "Moms", vat);
            Console.WriteLine("{0  -15} { 1, 10:F}", "Total pris, inkl. moms", total);
        }
    }
}

我需要改变什么,所以错误"输入字符串格式不正确"不出现?

如何解决“输入字符串格式不正确”的问题?

Console.WriteLine语句中,左括号和参数号之间不能有空格。所有的控制台。WriteLine语句需要随此更改进行修改。下面是解释

变化的说明性行

错误代码

Console.WriteLine("{0, -15} { 1, 10:F}", "Pris på varen", price);

正确的代码

Console.WriteLine("{0,-15} {1,10:F}", "Pris på varen", price);

最后一个Console.WriteLine语句缺少逗号(正如@Berkay所指出的)

错误代码

Console.WriteLine("{0  -15} {1, 10:F}", "Total pris, inkl. moms", total);

右代码

Console.WriteLine("{0,-15} {1,10:F}", "Total pris, inkl. moms", total);

空格,需要的地方缺少逗号。你可以分享https://dotnetfiddle.net/z8q1he。人们很容易摆弄你的代码。

    public static void Main(string[] args)
    {
        Console.WriteLine("Write the price here  ");
        String text = Console.ReadLine();
        double price = Convert.ToDouble(text);
        Console.WriteLine("Write the amount here   ");
        text = Console.ReadLine();
        int quantity = Convert.ToInt32(text);
        double amount = price * quantity;
        double vat = amount * 0.25;
        double total = amount + vat;
        Console.WriteLine("{0, -15} {1, 10:F}", "Pris pa varen", price);
        Console.WriteLine("{0, -15} {1, 10:D}", "Antal styk", quantity);
        Console.WriteLine("{0, -15} {1, 10:F}", "Pris eks. moms", amount);
        Console.WriteLine("{0, -15} {1, 10:F}", "Moms", vat);
        Console.WriteLine("{0,  -15} {1, 10:F}", "Total pris inkl. moms", total);
}

在没有进行大量测试的情况下,我会说:double price = Convert.ToDouble(text);也很危险,因为很难知道它是否期望逗号或句点作为小数分隔符-这将给出确切的错误,所以尝试使用int,或者尝试逗号和句点来测试是否有差异……并考虑通过设置线程

的区域性来处理它

代码中有一些语法错误。最后的Console.WriteLine方法调用使用字符串格式结构,但缺少string.Format()。另外,最后一行在第一个括号的数值之间缺少一个逗号。不管怎样,下面是更正后的代码:

        Console.WriteLine("Write the price here  ");
        string text = Console.ReadLine();
        double price = Convert.ToDouble(text);
        Console.WriteLine("Write the amount here   ");
        text = Console.ReadLine();
        int quantity = Convert.ToInt32(text);
        double amount = price * quantity;
        double vat = amount * 0.25;
        double total = amount + vat;
        Console.WriteLine(string.Format("{0, -15} {1, 10:F}", "Pris på varen", price));
        Console.WriteLine(string.Format("{0, -15} {1, 10:D}", "Antal styk", quantity));
        Console.WriteLine(string.Format("{0, -15} {1, 10:F}", "Pris eks. moms", amount));
        Console.WriteLine(string.Format("{0, -15} {1, 10:F}", "Moms", vat));
        Console.WriteLine(string.Format("{0, -15} {1, 10:F}", "Total pris, inkl. moms", total));
        Console.Read();