c# - C# Calculator 在某些操作中使用 List Array 错误 Windows 窗体应用程序
问题描述
您好,我还是编程新手,是的,这不是您将看到的最好的代码...我尝试在 C# windows 窗体上制作计算器以获得乐趣,但在减法和除法运算时遇到了麻烦,但是加法和乘法对我来说非常好。我决定有一个列表数组,这样我就可以尽可能多地输入数字。
减法的错误是当我输入例如 5 - 2 结果将是 -3
至于除法,错误是结果总是1
请告诉我我哪里出错了,如果可能的话,请给出详细的解释,以便我对编程有更多的了解。提前致谢!
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 = "";
}
}
}
解决方案
对于划分,很明显:
quotient = value / value;
value
/value
将永远是1
。
一定有quotient
在那个循环的某个地方......
对于减法,问题在于由于您执行减法的方式,数字的顺序是相反的。
让我们说 5 - 2:
foreach (int value in Numlist)
{
difference = value - difference;
}
NumList = {5,2}
第一次迭代:
difference = value(5) - difference(0) = 5
第二次迭代:
difference = value(2) - difference(5) = -3
您应该颠倒循环的顺序:NumList.Reverse()
对于部门也是如此:
分配:
foreach (int value in Numlist.Reverse())
{
quotient = value / quotient;
}
减法:
foreach (int value in Numlist)
{
difference = value - difference;
}
推荐阅读
- firebase - 为管理员使用 Firebase 自定义声明(Firestore 和云存储)
- spring-boot - 警告:bounce_queue_lifetime 大于 maximal_queue_lifetime - 调整bounce_queue_lifetime
- ruby-on-rails - 将自定义域分配给 S3 存储桶
- javascript - 在 javascript 中重命名 JSON 键
- c# - 将多个字典合二为一
- ios - 字体(Marion 字体)未显示在 XCode 的字体系列中
- javascript - p-dropdown 未正确显示标签
- sharepoint - Microsoft 图形和 Azure Ad 用户身份验证
- android - React-Native:Listview 仅在 IOS 中不滚动到屏幕底部
- javascript - 如何使路由器链接与自定义链接组件一起使用?