繁体   English   中英

错误:输入字符串的格式不正确

[英]Error: Input string is not in the correct format

我是编码新手,所以请帮助我,错误出现在下面的注释行中:

private void order_Click(object sender, EventArgs e)

        {
            double[] itemcost = new double[2000];
            itemcost[0] = Convert.ToDouble(pep.Text) * price_pep; // Error here
            itemcost[2] = Convert.ToDouble(all.Text) * price_all;
            itemcost[3] = Convert.ToDouble(haw.Text) * price_haw;
            itemcost[4] = Convert.ToDouble(veg.Text) * price_veg;
            itemcost[5] = Convert.ToDouble(bre.Text) * price_bre;
            itemcost[6] = Convert.ToDouble(chi.Text) * price_chi;
            itemcost[7] = Convert.ToDouble(pot.Text) * price_pot;
            itemcost[8] = Convert.ToDouble(bot.Text) * price_bot;
            itemcost[9] = Convert.ToDouble(cok.Text) * price_cok;
            itemcost[10] = Convert.ToDouble(mou.Text) * price_mou;
        }

这是出现的错误:

这是出现的错误

您有一个转换错误,所以这意味着您的输入字符串无法转换为double 您应该确保名为pep的变量是一个数字。

这个错误是因为输入类型不能转换为double类型,我写了一个类似的代码来重现这个问题,这是我的测试结果: 在此处输入图像描述

我们可以加上try catch来解决这个问题,比如:

private void order_Click(object sender, EventArgs e)
    {
        try
        {
            double[] itemcost = new double[2000];
            itemcost[0] = Convert.ToDouble(pep.Text) * price_pep; 
            itemcost[2] = Convert.ToDouble(all.Text) * price_all;
            itemcost[3] = Convert.ToDouble(haw.Text) * price_haw;
            itemcost[4] = Convert.ToDouble(veg.Text) * price_veg;
            itemcost[5] = Convert.ToDouble(bre.Text) * price_bre;
            itemcost[6] = Convert.ToDouble(chi.Text) * price_chi;
            itemcost[7] = Convert.ToDouble(pot.Text) * price_pot;
            itemcost[8] = Convert.ToDouble(bot.Text) * price_bot;
            itemcost[9] = Convert.ToDouble(cok.Text) * price_cok;
            itemcost[10] = Convert.ToDouble(mou.Text) * price_mou;
        }
        catch
        {
            MessageBox.Show("Please enter the correct number");
        }
    }

要小心,因为在编码中小数点分隔符需要是 a。 而不是 a,例如,如果用户写入数字“15,48”,解析将崩溃,因为它期望“15.48”,如果这是问题所在(您可以通过在第 194 行放置一个调试红点以及何时在 pep.Text 上按下按钮只是 hover 以查看存储在那里的值,如果这是问题请尝试这样的事情:
double.Parse(pep.Text.Replace(",", "."));
string.Replace() 是一种常用方法,它将字符串中的特定字符或字符串值(在本例中为“,”)替换为不同的值(在本例中为“.”以呈现可解析为双精度的值)。 如果您想了解有关此方法的更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM