输入字符串格式不正确

时间:2013-11-16 17:42:53

标签: c# calculator

这是一个C#初学者。我一直在关注制作简单计算器的指南。一切都很好'直到我添加了点按钮。如果我使用计算器计算基本整数,那就没问题了。但是,当我添加点按钮来计算带小数的双打时,它会被搞砸。有任何想法吗?

    // Above this are the numeric buttons, no problem with those

    private void btnPoint_Click(object sender, EventArgs e)
    {
        txtDisplay.Text = txtDisplay.Text + btnPoint.Text;
    }

    double total1 = 0; 
    double total2 = 0; 

    private void btnPlus_Click(object sender, EventArgs e)
    {
        total1 = total1 + double.Parse(txtDisplay.Text); // Error comes here
        txtDisplay.Clear();
    }

    private void btnEquals_Click(object sender, EventArgs e)
    {
        total2 = total1 + double.Parse(txtDisplay.Text); // And one time it came here
        txtDisplay.Text = total2.ToString(); 
        total1 = 0; 
    }

2 个答案:

答案 0 :(得分:0)

前一段时间我已经制作了一个简单的计算器并检查输入我使用了正则表达式(如果你不知道什么是正则表达式看看here

您可以使用此正则表达式来检查输入:^[0-9]{0,}([.,][0-9]{1,})?$ 它允许:

0
10 
100
1,2
1.2

但不是

.1
,1
 And all type of string

要在c#中使用正则表达式,必须声明一个Regex对象。在此之前,您需要添加using System.Text.RegularExpressions; 比使用正则表达式更简单

Regex regex=new Regex(pattern);
if(regex.IsMatch(myTextBox.Text))
{//Do something
}
else{//Catch the error
}

如果您想了解有关正则表达式的更多信息,请查看here

答案 1 :(得分:-1)

而不是使用Double.Parse使用Double.TryParse

private void btnPlus_Click(object sender, EventArgs e)
{
    Double v = 0;
    if ( Double.TryParse(txtDisplay.Text.Trim(), out v)
    {
        total1 = total1 + v;
        txtDisplay.Clear();
    }
    else
    {
        // Invalid value
    }

}