我有一个非常恼人的问题,我一直在寻找各处找到但没有一个对我有意义。我最近刚刚开始使用C#,所以如果它是一个愚蠢的错误,很抱歉。
我已经构建了一个计算器,我可以成功实现它,但我希望它能够在用户点击它时显示操作。例如,当用户点击6按钮当然它在文本字段然后中显示6当他按下加号(+)按钮时,它应该显示[6 +]然后他按5例如它在textfield [6 + 5]中看起来像这样。
现在这是我的错误。我可以完成上述所有工作,但是当我单击等于(=)按钮时,我收到错误。它说
“输入字符串的格式不正确。”
它说错误在这行代码上:
decimal total = Convert.ToDecimal(LCD.Tag) +
Convert.ToDecimal(LCD.Text);
继承我的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Window : Form
{
bool pluss = false;
bool minuss = false;
bool multiplyy = false;
bool dividee = false;
public Window()
{
InitializeComponent();
}
private void clear_Click(object sender, EventArgs e)
{
LCD.Text = "";
}
private void dec_Click(object sender, EventArgs e)
{
if (LCD.Text.Contains("."))
{
return;
}
else {
LCD.Text = LCD.Text + ".";
}
}
private void zero_Click(object sender, EventArgs e)
{
LCD.Text = LCD.Text + "0";
}
private void one_Click(object sender, EventArgs e)
{
LCD.Text = LCD.Text + "1";
}
private void two_Click(object sender, EventArgs e)
{
LCD.Text = LCD.Text + "2";
}
private void three_Click(object sender, EventArgs e)
{
LCD.Text = LCD.Text + "3";
}
private void four_Click(object sender, EventArgs e)
{
LCD.Text = LCD.Text + "4";
}
private void five_Click(object sender, EventArgs e)
{
LCD.Text = LCD.Text + "5";
}
private void six_Click(object sender, EventArgs e)
{
LCD.Text = LCD.Text + "6";
}
private void seven_Click(object sender, EventArgs e)
{
LCD.Text = LCD.Text + "7";
}
private void eight_Click(object sender, EventArgs e)
{
LCD.Text = LCD.Text + "8";
}
private void nine_Click(object sender, EventArgs e)
{
LCD.Text = LCD.Text + "9";
}
private void plus_Click(object sender, EventArgs e)
{
if (LCD.Text == "")
{
return;
}else{
pluss = true;
LCD.Tag = LCD.Text;
LCD.Text = LCD.Text + " + ";
}
}
private void equal_Click(object sender, EventArgs e)
{
decimal total = Convert.ToDecimal(LCD.Tag) + Convert.ToDecimal(LCD.Text);
LCD.Text = total.ToString();
}
}
}
我正在等待某人的回复,如果我得到解决办法,我会非常感激。 感谢。
答案 0 :(得分:4)
程序崩溃时:
LCD.Tag
和LCD.Text
。我意识到这是一个练习项目,但这种来回的字符串操作并不是构建计算器的最佳方法。最好将显示与用于包含表达式树和值的数据结构(即用于进行实际计算的数据结构)分开。
答案 1 :(得分:0)
您正在尝试将包含“+”符号的字符串转换为十进制格式。
在您的应用程序中放置一些断点并检查它崩溃的位置,该值可能不是您所期望的值。
答案 2 :(得分:0)
了解您要转换为Convert.ToDecimal
的内容(LCD.Text
)。它期望一个字符串格式的数字,但你传递的是像“1 + 2
”这样的东西。您必须自己评估表达式。