名为...的局部变量已在此范围内定义 [英] Local Variable named ... is already defined in this scope

查看:168
本文介绍了名为...的局部变量已在此范围内定义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨!首先,我很抱歉我的长名,我在这个任务中一直过于描述,因为我还很新,这有很多事情要发生。



问题是:我需要我的计算按钮来计算我的方程,然后突出显示总数较小的标签。我使用相同的变量名两次,因为我需要它两次,但似乎我告诉它1 + 1 = 2,然后告诉它1 + 1 = 4,所以我明白为什么我有错误。我只是不知道如何解决它。我尝试了方括号{},但它仍然给出错误,因为它仍然是父范围的一部分,如果我移出一个,按钮将不会做这两件事。



具体错误的部分是:



Hi! First, I am SO sorry for my long names, I've been overly descriptive in this assignment because I'm still pretty new, and this has a lot going on.

The problem is this: I need my "calculate" button to calculate my equations, then highlight the label with the smaller total. I used the same variable name twice, as I need it twice, but it seems like I told it 1+1=2, then told it 1+1=4, so I understand WHY I have the error. I just don't know how to fix it. I tried brackets {} but it still gives the error because it's still part of the parent scope, and if I move one out of it, the button won't do both things.

The part that is wrong specifically is this:

//HIGHLIGHTING highlight lesser cost in green

            decimal calc5YrTotal1 = Convert.ToInt32(label5YearTotalCostAnswerCar1.Text);
            decimal calc5YrTotal2 = Convert.ToInt32(label5YearTotalCostAnswerCar2.Text);
            if (calc5YrTotal1 < calc5YrTotal2)
            label5YearTotalCostAnswerCar1.BackColor = Color.Green;
            else
            label5YearTotalCostAnswerCar2.BackColor = Color.Green;

calc1YearGasCar1 and calc1YearGasCar2 are the variables used twice. 

********UPDATE********************

I tried renaming them, and I got another error. 
I tried: 

decimal calc5YrTotal1 = Convert.ToInt32(label5YearTotalCostAnswerCar1.Text);
decimal calc5YrTotal2 = Convert.ToInt32(label5YearTotalCostAnswerCar2.Text);
if (calc1YearGasCar1 < calc1YearGasCar2)
label5YearTotalCostAnswerCar1.BackColor = Color.Green;
else
label5YearTotalCostAnswerCar2.BackColor = Color.Green;

I got this error:

An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll

Additional information: Input string was not in a correct format.

*****************************************************************************

My ENTIRE code is this:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CarCostComparison___AmyCollins
{
    public partial class FormCarCostComparison : Form
    {
        public FormCarCostComparison()
        {
            InitializeComponent();
        }

        private void label3_Click(object sender, EventArgs e)
        {

        }

        private void FormCarCostComparison_Load(object sender, EventArgs e)
        {
            //Author: Amy C


        }

        private void buttonCalculate_Click(object sender, EventArgs e)
        {

            //Constants assumed price of gas and miles driven a year

            const decimal constPriceGas = 3.5m;
            const decimal constMilesDriven = 12000;

            //Variables user entered for car 1 and 2

            decimal userEnteredMPGCar1 = 0;
            decimal userEnteredInsuranceCar1 = 0;
            decimal userEnteredPurchasePriceCar1 = 0;
            decimal userEnteredRepairCar1 = 0;

            decimal userEnteredMPGCar2 = 0;
            decimal userEnteredPurchasePriceCar2 = 0;
            decimal userEnteredRepairCar2 = 0;
            decimal userEnteredInsuranceCar2 = 0;

            //Variables calculations

            decimal calc1YearGasCar1 = 0;
            decimal calc5YearCostCar1 = 0;

            decimal calc1YearGasCar2 = 0;
            decimal calc5YearCostCar2 = 0;

            //Input convert

            userEnteredMPGCar1 = decimal.Parse(textBoxMPG1.Text);
            userEnteredInsuranceCar1 = decimal.Parse(textBoxInsuranceCost1.Text);
            userEnteredPurchasePriceCar1 = decimal.Parse(textBoxPurchasePrice1.Text);
            userEnteredRepairCar1 = decimal.Parse(textBoxRepairCost1.Text);

            userEnteredMPGCar2 = decimal.Parse(textBoxMPG2.Text);
            userEnteredInsuranceCar2 = decimal.Parse(textBoxInsuranceCost2.Text);
            userEnteredPurchasePriceCar2 = decimal.Parse(textBoxPurchasePrice2.Text);
            userEnteredRepairCar2 = decimal.Parse(textBoxRepairCost2.Text);

            //Processing calculations 5 year total cost and 1 year fuel cost

            calc1YearGasCar1 = (constMilesDriven / userEnteredMPGCar1 * constPriceGas);

            calc5YearCostCar1 = (userEnteredPurchasePriceCar1 + (calc1YearGasCar1 * 5) + (userEnteredInsuranceCar1 * 5) + (userEnteredRepairCar1 * 5));


            calc1YearGasCar2 = (constMilesDriven / userEnteredMPGCar2 * constPriceGas);

            calc5YearCostCar2 = (userEnteredPurchasePriceCar2 + (calc1YearGasCar2 * 5) + (userEnteredInsuranceCar2 * 5) + (userEnteredRepairCar2 * 5));

            //Output convert 

            label1YearFuelAnswerCar1.Text = calc1YearGasCar1.ToString();
            label5YearTotalCostAnswerCar1.Text = calc5YearCostCar1.ToString();

            label1YearFuelAnswerCar2.Text = calc1YearGasCar2.ToString();
            label5YearTotalCostAnswerCar2.Text = calc5YearCostCar2.ToString();

             //HIGHLIGHTING highlight lesser cost in green

                int calc1YearGasCar1 = Convert.ToInt32(label5YearTotalCostAnswerCar1.Text);
                int calc1YearGasCar2 = Convert.ToInt32(label5YearTotalCostAnswerCar2.Text);
                if (calc1YearGasCar1 < calc1YearGasCar2)
                    label5YearTotalCostAnswerCar1.BackColor = Color.Green;
                else
                    label5YearTotalCostAnswerCar2.BackColor = Color.Green;
            




        }

        private void textBoxMPG1_TextChanged(object sender, EventArgs e)
        {

        }

        private void textBoxMake2_TextChanged(object sender, EventArgs e)
        {

        }

        private void buttonClear_Click(object sender, EventArgs e)
        {
            //Clear Button

            textBoxMake1.Text = "";
            textBoxModel1.Text = "";
            textBoxYear1.Text = "";
            textBoxMPG1.Text = "";
            textBoxPurchasePrice1.Text = "";
            textBoxRepairCost1.Text = "";
            textBoxInsuranceCost1.Text = "";
            label1YearFuelAnswerCar1.Text = "";
            label5YearTotalCostAnswerCar1.Text = "";

            textBoxMake2.Text = "";
            textBoxModel2.Text = "";
            textBoxYear2.Text = "";
            textBoxMPG2.Text = "";
            textBoxPurchasePrice2.Text = "";
            textBoxRepairCost2.Text = "";
            textBoxInsuranceCost2.Text = "";
            label1YearFuelAnswerCar2.Text = "";
            label5YearTotalCostAnswerCar2.Text = "";

            //Note to self (placeholder)
        }

        private void label5YearTotalCost_Click(object sender, EventArgs e)
        {

        }
    }
}







(另外,知道如何以更简单的方式清除所有盒子会很棒,但我现在只是担心错误了)



任何帮助都非常感谢!!



Amy




(Also, knowing how to clear all the boxes in an easier way would be great, but I'm just worried about the error for now)

Any help is much appreciated!!

Amy

推荐答案

先生,如果你仔细观察,你会发现这些线路

sir, if you see closely you will find these lines
decimal calc1YearGasCar1 = 0;






And

int calc1YearGasCar1 = Convert.ToInt32(label5YearTotalCostAnswerCar1.Text);



您无法在特定代码块中定义相同的名称变量(事件或范围)



解决问题

更改上述任何2个变量的名称。


You cannot define same name variable in a particular code block (Event Or Scope)

Solving The Problem
Change name of any of the 2 variables mentioned above.


试试这个



try this

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CarCostComparison___AmyCollins
{
    public partial class FormCarCostComparison : Form
    {
        public FormCarCostComparison()
        {
            InitializeComponent();
        }

        private void label3_Click(object sender, EventArgs e)
        {

        }

        private void FormCarCostComparison_Load(object sender, EventArgs e)
        {
            //Author: Amy C


        }

        private void buttonCalculate_Click(object sender, EventArgs e)
        {

            //Constants assumed price of gas and miles driven a year

            const decimal constPriceGas = 3.5m;
            const decimal constMilesDriven = 12000;

            //Variables user entered for car 1 and 2

            decimal userEnteredMPGCar1 = 0;
            decimal userEnteredInsuranceCar1 = 0;
            decimal userEnteredPurchasePriceCar1 = 0;
            decimal userEnteredRepairCar1 = 0;

            decimal userEnteredMPGCar2 = 0;
            decimal userEnteredPurchasePriceCar2 = 0;
            decimal userEnteredRepairCar2 = 0;
            decimal userEnteredInsuranceCar2 = 0;

            //Variables calculations

            decimal calc1YearGasCar1 = 0;
            decimal calc5YearCostCar1 = 0;

            decimal calc1YearGasCar2 = 0;
            decimal calc5YearCostCar2 = 0;

            //Input convert

            userEnteredMPGCar1 = decimal.Parse(textBoxMPG1.Text);
            userEnteredInsuranceCar1 = decimal.Parse(textBoxInsuranceCost1.Text);
            userEnteredPurchasePriceCar1 = decimal.Parse(textBoxPurchasePrice1.Text);
            userEnteredRepairCar1 = decimal.Parse(textBoxRepairCost1.Text);

            userEnteredMPGCar2 = decimal.Parse(textBoxMPG2.Text);
            userEnteredInsuranceCar2 = decimal.Parse(textBoxInsuranceCost2.Text);
            userEnteredPurchasePriceCar2 = decimal.Parse(textBoxPurchasePrice2.Text);
            userEnteredRepairCar2 = decimal.Parse(textBoxRepairCost2.Text);

            //Processing calculations 5 year total cost and 1 year fuel cost

            calc1YearGasCar1 = (constMilesDriven / userEnteredMPGCar1 * constPriceGas);

            calc5YearCostCar1 = (userEnteredPurchasePriceCar1 + (calc1YearGasCar1 * 5) + (userEnteredInsuranceCar1 * 5) + (userEnteredRepairCar1 * 5));


            calc1YearGasCar2 = (constMilesDriven / userEnteredMPGCar2 * constPriceGas);

            calc5YearCostCar2 = (userEnteredPurchasePriceCar2 + (calc1YearGasCar2 * 5) + (userEnteredInsuranceCar2 * 5) + (userEnteredRepairCar2 * 5));

            //Output convert

            label1YearFuelAnswerCar1.Text = calc1YearGasCar1.ToString();
            label5YearTotalCostAnswerCar1.Text = calc5YearCostCar1.ToString();

            label1YearFuelAnswerCar2.Text = calc1YearGasCar2.ToString();
            label5YearTotalCostAnswerCar2.Text = calc5YearCostCar2.ToString();

            //HIGHLIGHTING highlight lesser cost in green

            // calc1YearGasCar1 = Convert.ToInt32(label5YearTotalCostAnswerCar1.Text);
            // calc1YearGasCar2 = Convert.ToInt32(label5YearTotalCostAnswerCar2.Text);
            if (calc5YearCostCar1< calc5YearCostCar2)
                label5YearTotalCostAnswerCar1.BackColor = Color.Green;
            else
                label5YearTotalCostAnswerCar2.BackColor = Color.Green;





        }

        private void textBoxMPG1_TextChanged(object sender, EventArgs e)
        {

        }

        private void textBoxMake2_TextChanged(object sender, EventArgs e)
        {

        }

        private void buttonClear_Click(object sender, EventArgs e)
        {
            //Clear Button

            textBoxMake1.Text = "";
            textBoxModel1.Text = "";
            textBoxYear1.Text = "";
            textBoxMPG1.Text = "";
            textBoxPurchasePrice1.Text = "";
            textBoxRepairCost1.Text = "";
            textBoxInsuranceCost1.Text = "";
            label1YearFuelAnswerCar1.Text = "";
            label5YearTotalCostAnswerCar1.Text = "";

            textBoxMake2.Text = "";
            textBoxModel2.Text = "";
            textBoxYear2.Text = "";
            textBoxMPG2.Text = "";
            textBoxPurchasePrice2.Text = "";
            textBoxRepairCost2.Text = "";
            textBoxInsuranceCost2.Text = "";
            label1YearFuelAnswerCar2.Text = "";
            label5YearTotalCostAnswerCar2.Text = "";

            //Note to self (placeholder)
        }

        private void label5YearTotalCost_Click(object sender, EventArgs e)
        {

        }
    }
}


这篇关于名为...的局部变量已在此范围内定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆