创建使用Array的方法

时间:2015-03-23 03:34:51

标签: c# arrays methods

我正在创建一个可存储每月销售额的表单。用户将点击提交按钮,这些数量将存储在数组中。

然后会有一个单击的总按钮,并调用一个总计来自数组的金额的方法。

到目前为止,我有两个问题(我知道):首先,我仍然不确定调用我的方法的正确格式。现在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.
            }

        }

    }

}

2 个答案:

答案 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。您将很快发现,在使用代码时,使用完全正确的数据类型非常重要。