我正在创建一个可存储每月销售额的表单。用户将点击提交按钮,这些数量将存储在数组中。
然后会有一个单击的总按钮,并调用一个总计来自数组的金额的方法。
到目前为止,我有两个问题(我知道):首先,我仍然不确定调用我的方法的正确格式。现在VS不喜欢我的变量“x”。我不知道该使用什么,所以我只是在那里插了一个。其次,汇总我的数组的代码也不正确。 VS不喜欢我的“索引”变量。
我试过注意代码中的问题区域。很抱歉这篇冗长的帖子和无知的问题。
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void submitButton_Click(object sender, EventArgs e)
{
//creating an array
const int SIZE = 12;
decimal[] amountsArray = new decimal[SIZE];
amountsArray[0] = decimal.Parse(JaninputBox.Text);
amountsArray[1] = decimal.Parse(FebinputBox.Text);
amountsArray[2] = decimal.Parse(MarinputBox.Text);
amountsArray[3] = decimal.Parse(AprinputBox.Text);
amountsArray[4] = decimal.Parse(MayinputBox.Text);
amountsArray[5] = decimal.Parse(JuninputBox.Text);
amountsArray[6] = decimal.Parse(JulinputBox.Text);
amountsArray[7] = decimal.Parse(AuginputBox.Text);
amountsArray[8] = decimal.Parse(SepinputBox.Text);
amountsArray[9] = decimal.Parse(OctinputBox.Text);
amountsArray[10] = decimal.Parse(NovinputBox.Text);
amountsArray[11] = decimal.Parse(DecinputBox.Text);
TotsalesButton.Enabled = true;
}
private void TotsalesButton_Click(object sender, EventArgs e)
{
// calling the method to total amounts from array
TotalIt(decimal x); **//<-- VS doesn't like this**
AvgsalesButton.Enabled = true; //enabling avg sales button
}
private void TotalIt(decimal[] amountsArray)
{
decimal sum; // variable to hold total
// method for totaling array data
for (decimal index = 0; index < amountsArray.Length; index++)
{
sum += amountsArray[index]; **//<-- Doesn't like "index"** here.
}
}
}
}
答案 0 :(得分:0)
很少有事情。除非你在别处处理输入,否则你应该使用TryParse,这样如果有人没有输入一个可以解析为十进制的值(即1.a03),就不会导致异常。 所以
decimal parsedDecimal;
amountsArray[0] = decimal.TryParse(JaninputBox.Text, out parsedDecimal) ? parsedDecimal : 0.00;
该部分。
TotsalesButton_Click正在调用一个带有十进制数组参数的方法(TotalIt),但是你使用的是一个小数'x',它甚至不是任何变量。
最简单的方法是尝试将amountArray声明为顶部的公共变量。
public partial class Form1 : Form
{
private decimal[] _amountsArray;
public Form1()
{
InitializeComponent();
}
}
然后在你的TotsalesButton中你不需要传递一个参数,只需检查数组是否为null(它不会是因为必须调用submitButton并且数组在那里被初始化)< / p>
private void TotsalesButton_Click(object sender, EventArgs e)
{
var sum = TotalIt();
if (sum > 0.0) AvgsalesButton.Enabled = true;
}
最后可以像这样调用总数
private decimal TotalIt()
{
if (_amountsArray == null) return;
decimal sum; // variable to hold total
//since you're iterating through an array, an index is always an int
for (int index = 0; index < amountsArray.Length; index++)
{
sum += amountsArray[index];
}
return sum;
}
答案 1 :(得分:0)
您现在遇到的根本问题与范围有关。您的某些变量的范围仅限于单个方法,但需要作为整个类的成员提供:
public partial class Form1 : Form
{
//creating an array
const int SIZE = 12;
decimal[] amountsArray = new decimal[SIZE];
public Form1()
{
InitializeComponent();
}
//...
}
然后您就可以调用TotalIt()
方法了。此外,根本不需要将数组传递给方法,因为它已经可以作为类的成员使用:
private void TotsalesButton_Click(object sender, EventArgs e)
{
TotalIt();
AvgsalesButton.Enabled = true; //enabling avg sales button
}
以下是TotalIt()
方法的样子。同样,由于该方法已经可以使用该数组,因此您无需声明为参数:
private void TotalIt()
{
amountsArray.Sum();
}
我不确定你打算用这个结果做什么......它不在原始代码中。但是,您可以看到Sum()
方法使整个过程变得更容易。但是,您的原始代码几乎是正确的。您所要做的就是将index
变量声明为int
而不是decimal
。您将很快发现,在使用代码时,使用完全正确的数据类型非常重要。