C#计算器在某些操作中使用列表数组时出错Windows窗体应用程序
您好,我还是编程新手,是的,这不是您将看到的最好的代码。。。为了好玩,我试着在C#windows窗体上制作计算器,我在减法和除法运算上遇到了困难,但加法和乘法对我来说效果非常好。我决定使用一个列表数组,这样我就可以输入任意数量的数字 减法的错误是当我输入示例5-2时,结果将是-3 至于除法,误差是结果总是1 请告诉我哪里出了问题,如果可能的话,请给出详细的解释,以便我能更多地了解编程。提前谢谢C#计算器在某些操作中使用列表数组时出错Windows窗体应用程序,c#,calculator,C#,Calculator,您好,我还是编程新手,是的,这不是您将看到的最好的代码。。。为了好玩,我试着在C#windows窗体上制作计算器,我在减法和除法运算上遇到了困难,但加法和乘法对我来说效果非常好。我决定使用一个列表数组,这样我就可以输入任意数量的数字 减法的错误是当我输入示例5-2时,结果将是-3 至于除法,误差是结果总是1 请告诉我哪里出了问题,如果可能的话,请给出详细的解释,以便我能更多地了解编程。提前谢谢 namespace CalculatorTestForm1 { public partial clas
namespace CalculatorTestForm1
{
public partial class Form1 : Form
{
public static List<int> Numlist = new List<int>();
public static string operation;
public Form1()
{
InitializeComponent();
}
private void Button_Click(object sender, EventArgs e)
{
Button Num = (Button)sender;
TXTBox.Text += Num.Text;
}
private void BPlus_Click(object sender, EventArgs e)
{
operation = "add";
int AddNum = Convert.ToInt32(this.TXTBox.Text);
Numlist.Add(AddNum);
TXTBox.Text = "";
}
private void BEquals_Click(object sender, EventArgs e)
{
int AddNum = Convert.ToInt32(this.TXTBox.Text);
Numlist.Add(AddNum);
int sum = 0;
int product = 1;
int quotient = 1;
int difference = 0;
if (operation == "add"){
foreach (int value in Numlist)
{
sum += value;
}
string Answer = sum.ToString();
TXTBox.Text = Answer;
}else if(operation == "minus"){
foreach (int value in Numlist)
{
difference = value - difference;
}
string Answer = difference.ToString();
TXTBox.Text = Answer;
}
else if (operation == "multiply")
{
foreach (int value in Numlist)
{
product *= value;
}
string Answer = product.ToString();
TXTBox.Text = Answer;
}
else if (operation == "divide")
{
foreach (int value in Numlist)
{
quotient = value / value;
}
string Answer = quotient.ToString();
TXTBox.Text = Answer;
}
Numlist.Clear();
}
private void BClear_Click(object sender, EventArgs e)
{
TXTBox.Text = "";
Numlist.Clear();
}
private void BMinus_Click(object sender, EventArgs e)
{
operation = "minus";
int AddNum = Convert.ToInt32(this.TXTBox.Text);
Numlist.Add(AddNum);
TXTBox.Text = "";
}
private void BDivide_Click(object sender, EventArgs e)
{
operation = "divide";
int AddNum = Convert.ToInt32(this.TXTBox.Text);
Numlist.Add(AddNum);
TXTBox.Text = "";
}
private void BMulti_Click(object sender, EventArgs e)
{
operation = "multiply";
int AddNum = Convert.ToInt32(this.TXTBox.Text);
Numlist.Add(AddNum);
TXTBox.Text = "";
}
}
}
namespace CalculatorTestForm1
{
公共部分类Form1:Form
{
public static List Numlist=new List();
公共静态字符串操作;
公共表格1()
{
初始化组件();
}
私有无效按钮\u单击(对象发送者,事件参数e)
{
按钮编号=(按钮)发送器;
TXTBox.Text+=Num.Text;
}
私有void BPlus\u单击(对象发送方,事件参数e)
{
操作=“添加”;
int AddNum=Convert.ToInt32(this.TXTBox.Text);
Numlist.Add(AddNum);
TXTBox.Text=“”;
}
私有void BEquals\u单击(对象发送方,事件参数e)
{
int AddNum=Convert.ToInt32(this.TXTBox.Text);
Numlist.Add(AddNum);
整数和=0;
int乘积=1;
整数商=1;
int差=0;
如果(操作==“添加”){
foreach(Numlist中的int值)
{
总和+=数值;
}
字符串应答=sum.ToString();
Text=答案;
}else if(操作==“减”){
foreach(Numlist中的int值)
{
差异=值-差异;
}
字符串应答=差分.ToString();
Text=答案;
}
else if(操作==“乘法”)
{
foreach(Numlist中的int值)
{
产品*=价值;
}
字符串应答=product.ToString();
Text=答案;
}
else if(操作==“除法”)
{
foreach(Numlist中的int值)
{
商=值/值;
}
字符串答案=商.ToString();
Text=答案;
}
Numlist.Clear();
}
私有void b清除单击(对象发送者,事件参数e)
{
TXTBox.Text=“”;
Numlist.Clear();
}
私有void BMinus\u单击(对象发送方,事件参数e)
{
操作=“减”;
int AddNum=Convert.ToInt32(this.TXTBox.Text);
Numlist.Add(AddNum);
TXTBox.Text=“”;
}
私有void BDivide_单击(对象发送方,事件参数e)
{
操作=“划分”;
int AddNum=Convert.ToInt32(this.TXTBox.Text);
Numlist.Add(AddNum);
TXTBox.Text=“”;
}
私有void b多点单击(对象发送方,事件参数e)
{
操作=“乘法”;
int AddNum=Convert.ToInt32(this.TXTBox.Text);
Numlist.Add(AddNum);
TXTBox.Text=“”;
}
}
}
对于部门来说,很明显:
quotient = value / value;
值
/值
将始终为1
在那个循环的某个地方一定有商
对于减法,问题是因为你的方法,数字的顺序是颠倒的
比方说5-2:
foreach (int value in Numlist)
{
difference = value - difference;
}
NumList={5,2}
第1次迭代:
差异=值(5)-差异(0)=5
第二次迭代:
差异=值(2)-差异(5)=-3
您应该颠倒循环的顺序:NumList.reverse()
以及该司:
分部:
减法:
对于部门而言,这是显而易见的:
quotient = value / value;
值
/值
将始终为1
在那个循环的某个地方一定有商
对于减法,问题是因为你的方法,数字的顺序是颠倒的
比方说5-2:
foreach (int value in Numlist)
{
difference = value - difference;
}
NumList={5,2}
第1次迭代:
差异=值(5)-差异(0)=5
第二次迭代:
差异=值(2)-差异(5)=-3
您应该颠倒循环的顺序:NumList.reverse()
以及该司:
分部:
减法:
通过阅读源代码,除法的问题很明显:
quotient=value/value代码>除法的问题在阅读源代码时很明显:商=值/值代码>哇!非常感谢你!我从来不知道您可以在代码中实际执行Numlist.Reverse()。再次非常感谢,别指望会有一个很棒的编程社区。哇!非常感谢你!我从来不知道您可以在代码中实际执行Numlist.Reverse()。再次非常感谢,别指望会有一个伟大的编程社区。