C# - 使用并行数组计算 GUI 中 phone 调用的成本

C# - Use parallel arrays to calculate cost of a phone call in GUI

全部。这里的学生程序员,不仅仅是一个菜鸟,而是在数组方面苦苦挣扎。我有一个家庭作业,几周前我交了一半的分数,因为我无法让并行阵列工作。我们被要求创建一个 GUI 来计算六个不同区号的 phone 通话的费用。 GUI 要求输入区号(您会得到一个要输入的有效代码列表)和通话时长。我认为我的问题是让程序循环遍历区号数组,但我完全不知道从这里到哪里去。 (我也敢打赌,当我看到答案可能是什么时,我会捂脸。)这是我的 GUI 按钮代码。 returns 无论我输入什么区号,它的费用都是 1.40 美元。感谢观看!

private void calcButton_Click(object sender, EventArgs e)
    {
        int[] areaCode = { 262, 414, 608, 715, 815, 902 };
        double[] rates = { 0.07, 0.10, 0.05, 0.16, 0.24, 0.14 };
        int inputAC;
        double total = 0;

        for (int x = 0; x < areaCode.Length; ++x)
        {

            inputAC = Convert.ToInt32(areaCodeTextBox.Text);

            total = Convert.ToInt32(callTimeTextBox.Text) * rates[x];
            costResultsLabel.Text = "Your " + callTimeTextBox.Text + "-minute call to area code " + areaCodeTextBox.Text + " will cost " + total.ToString("C");


        }
    }

试试这个

private void calcButton_Click(object sender, EventArgs e)
{
    int[] areaCode = { 262, 414, 608, 715, 815, 902 };
    double[] rates = { 0.07, 0.10, 0.05, 0.16, 0.24, 0.14 };
    if(!string.IsNullOrEmpty(areaCodeTextBox.Text))
    {
        double total = 0;
        if(!string.IsNullOrEmpty(callTimeTextBox.Text))
        {
            int index = Array.IndexOf(areaCode, int.Parse(areaCodeTextBox.Text)); //You can use TryParse to catch for invalid input
            if(index > 0)
            {
                total = Convert.ToInt32(callTimeTextBox.Text) * rates[index];
                costResultsLabel.Text = "Your " + callTimeTextBox.Text + "-minute call to area code " + areaCodeTextBox.Text + " will cost " + total.ToString("C");
            }
            else
            {
                //Message Area code not found  
            }
        }
        else
        {
            //Message Call time is empty
        }
    }
    else
    {
        //Message Area Code is empty
    }
}

或者,如果给您的作业必须说明如何跳出循环,那么您在当前代码中所需要的只是添加一个条件

private void calcButton_Click(object sender, EventArgs e)
{
    int[] areaCode = { 262, 414, 608, 715, 815, 902 };
    double[] rates = { 0.07, 0.10, 0.05, 0.16, 0.24, 0.14 };
    int inputAC;
    double total = 0;

    for (int x = 0; x < areaCode.Length; ++x)
    {    
        inputAC = Convert.ToInt32(areaCodeTextBox.Text);
        total = Convert.ToInt32(callTimeTextBox.Text) * rates[x];

        if(inputAC == areaCode[x]) //ADDED condition
            break;
    }
    costResultsLabel.Text = "Your " + callTimeTextBox.Text + "-minute call to area code " + areaCodeTextBox.Text + " will cost " + total.ToString("C");
}