5

在这里充分披露,我是一名正在做作业的学生。我有 2 个列表框,其中包含可以选择的项目。其中所说的不需要提取。我写出了代码,一切正常,除了在代码末尾的 3 个变量上出现“使用未分配变量”的错误消息。它们是 locFees、days 和 registration。谁能告诉我我做错了什么导致变量没有值?

    private void btnCalc_Click(object sender, EventArgs e)
    {
        double registration, lodging, total, days, locFees;
        int workshopIndex, locationIndex;
        if (lbWorkshop.SelectedIndex != -1)
        {
            workshopIndex = lbWorkshop.SelectedIndex;
            switch (workshopIndex)
            {
                case 0:
                    days = 3;
                    registration = 1000;
                    break;
                case 1:
                    days = 3;
                    registration = 800;
                    break;
                case 2:
                    days = 3;
                    registration = 1500;
                    break;
                case 3:
                    days = 5;
                    registration = 1300;
                    break;
                case 4:
                    days = 1;
                    registration = 500;
                    break;
            }
        }
        else
        {
            MessageBox.Show("You didn't select a workshop.");
        }
        if (lbLocation.SelectedIndex != -1)
        {
            locationIndex = lbLocation.SelectedIndex;
            switch (locationIndex)
            {
                case 0:
                    locFees = 150;
                    break;
                case 1:
                    locFees = 225;
                    break;
                case 2:
                    locFees = 175;
                    break;
                case 3:
                    locFees = 300;
                    break;
                case 4:
                    locFees = 175;
                    break;
                case 5:
                    locFees = 150;
                    break;
            }
        }
        else
        {
            MessageBox.Show("You didn't select a city.");
        }
        lodging = locFees * days;
        total = registration + lodging;
    }
4

1 回答 1

5

谁能告诉我我做错了什么导致变量没有值?

当然——你忽略了workshopIndex不是 0、1、2、3 或 4 的可能性。

如果您认为这永远不会发生,只需添加:

default:
    throw new InvalidOperationException("Invalid selected index " + workshopIndex);

或者,如果您只想使用一些默认值,请执行以下操作:

default:
    days = 1;
    registration = 100;
    break;

这是您最终可以得到和未分配的一种方式。daysregistration

接下来,你只需要进入 switch 块 if lbWorkshop.SelectedIndex != -1。你的else块只是:

 else
 {
     MessageBox.Show("You didn't select a workshop.");
 }

...所以在那个else块之后,你要继续。你可能想要:

 else
 {
     MessageBox.Show("You didn't select a workshop.");
     return;
 }

locFees然后,就 switch 语句和else块而言,您遇到了同样的问题。

从中学到一件事:感谢编译器为您发现了这些。它阻止了你运行肯定有错误的代码。这总是一件好事。

于 2012-09-21T18:39:23.230 回答