在这里充分披露,我是一名做作业的学生。我有2个列表框,其中包含可以选择的项目。其中所说的内容不需要提取。我写了代码并且一切正常,除了我在代码末尾的3个变量上得到一个错误“使用未分配的变量”。他们是locFees,天和注册。谁能告诉我我做错了什么导致变量没有值?
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;
}
答案 0 :(得分:5)
任何人都可以告诉我,我做错了导致变量没有值吗?
当然 - 你忽略了workshopIndex
不是0,1,2,3或4的可能性。
如果你认为永远不会发生这种情况,只需添加:
default:
throw new InvalidOperationException("Invalid selected index " + workshopIndex);
或者,如果您只想使用某些默认值,请执行以下操作:
default:
days = 1;
registration = 100;
break;
这是第一种方式,您最终可以取消分配days
和registration
。
接下来,如果lbWorkshop.SelectedIndex != -1
,你只会进入开关区。您的else
阻止只是:
else
{
MessageBox.Show("You didn't select a workshop.");
}
...所以在else
阻止之后,你将继续。你可能想要:
else
{
MessageBox.Show("You didn't select a workshop.");
return;
}
就switch语句和locFees
块而言,您else
遇到了同样的问题。
要从中学到一点:请感谢编译器为您发现这些。它阻止你运行肯定有错误的代码。这总是一件好事。