[英]C# wpf calculator
I'm making a calculator but I get an exception when I try to make a calculation with a decimal number. 我正在制作计算器,但是尝试使用十进制数进行计算时出现异常。 There is something wrong with with all
sum1 += double.Parse(numEnt.Text);
所有
sum1 += double.Parse(numEnt.Text);
But I'm a bit lost now:P 但是我现在有点迷路了:P
public partial class MainWindow : Window
{
double sum1 = 0;
double sum2 = 0;
string dotSign = "";
bool plusButtonClicked = false;
bool subButtonClicked = false;
bool multButtonClicked = false;
bool divButtonClicked = false;
public MainWindow()
{
InitializeComponent();
}
private void NumberValidationTextBox(object sender, TextCompositionEventArgs e)
{
Regex regex = new Regex("[^0-9]+");
e.Handled = regex.IsMatch(e.Text);
}
private void one_Click(object sender, RoutedEventArgs e)
{
numEnt.Text += one.Content;
}
private void two_Click(object sender, RoutedEventArgs e)
{
numEnt.Text += two.Content;
}
private void three_Click(object sender, RoutedEventArgs e)
{
numEnt.Text += three.Content;
}
private void four_Click(object sender, RoutedEventArgs e)
{
numEnt.Text += four.Content;
}
private void five_Click(object sender, RoutedEventArgs e)
{
numEnt.Text += five.Content;
}
private void six_Click(object sender, RoutedEventArgs e)
{
numEnt.Text += six.Content;
}
private void seven_Click(object sender, RoutedEventArgs e)
{
numEnt.Text += seven.Content;
}
private void eight_Click(object sender, RoutedEventArgs e)
{
numEnt.Text += eight.Content;
}
private void nine_Click(object sender, RoutedEventArgs e)
{
numEnt.Text += nine.Content;
}
private void zero_Click(object sender, RoutedEventArgs e)
{
numEnt.Text += zero.Content;
}
private void add_Click(object sender, RoutedEventArgs e)
{
sum1 += double.Parse(numEnt.Text);
numEnt.Clear();
plusButtonClicked = true;
subButtonClicked = false;
multButtonClicked = false;
divButtonClicked = false;
}
private void sub_Click(object sender, RoutedEventArgs e)
{
sum1 += double.Parse(numEnt.Text);
numEnt.Clear();
plusButtonClicked = false;
subButtonClicked = true;
multButtonClicked = false;
divButtonClicked = false;
}
private void mult_Click(object sender, RoutedEventArgs e)
{
sum1 += double.Parse(numEnt.Text);
numEnt.Clear();
plusButtonClicked = false;
subButtonClicked = false;
multButtonClicked = true;
divButtonClicked = false;
}
private void div_Click(object sender, RoutedEventArgs e)
{
sum1 = Convert.ToDouble(dotSign);
sum1 += double.Parse(numEnt.Text);
numEnt.Clear();
plusButtonClicked = false;
subButtonClicked = false;
multButtonClicked = false;
divButtonClicked = true;
}
public void deci_Click(object sender, RoutedEventArgs e)
{
double currentInput = numEnt.Text.Length;
bool pointFound = false;
/*for (int i = 0; i < currentInput.Length; i++)
{
if (currentInput[i] == '.')
pointFound = true;
}*/
if (pointFound == false)
numEnt.Text += ".";
}
private void equal_Click(object sender, RoutedEventArgs e)
{
if (plusButtonClicked == true)
{
sum2 = sum1 + double.Parse(numEnt.Text);
result.Text = sum2.ToString();
sum1 = 0;
}
if (subButtonClicked == true)
{
sum2 = sum1 - double.Parse(numEnt.Text);
result.Text = sum2.ToString();
sum1 = 0;
}
if (multButtonClicked == true)
{
sum2 = sum1 * double.Parse(numEnt.Text);
result.Text = sum2.ToString();
sum1 = 0;
}
if (divButtonClicked == true)
{
sum2 = sum1 / double.Parse(numEnt.Text);
result.Text = sum2.ToString();
sum1 = 0;
}
numEnt.Clear();
}
private void clear_Click(object sender, RoutedEventArgs e)
{
numEnt.Clear();
calculations.Clear();
result.Clear();
}
private void change_Click(object sender, RoutedEventArgs e)
{
double signchange = numEnt.Text.Length;
signchange = -signchange;
numEnt.Text = signchange.ToString();
}
}
}
double.Parse(string) double.Parse(字符串)
Only three possible exceptions with double.Parse(string), and since it doesn't seem you played with its parameter, you're getting a FormatException. double.Parse(string)仅存在三种可能的异常,并且由于似乎您没有使用其参数,因此您将获得FormatException。 You were talking about decimal numbers, so I'm guessing it all comes down to the decimal and groups separators you're using.
您在谈论十进制数字,所以我想这全都归结为您使用的十进制和组分隔符。 By defaults, I think you can use '.'
默认情况下,我认为您可以使用“。” as a decimal separator and ',' or ' ' as a groups one.
作为小数点分隔符,“,”或“”作为一组。
You should consider using double.Parse(string, NumberStyle) to define more precisely the separators you wish to use in your calculator. 您应该考虑使用double.Parse(string,NumberStyle)来更精确地定义要在计算器中使用的分隔符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.