我想知道我做错了什么,因为我正在尝试制作一个菜单,其中需要在预定义值中一起计算三个不同的课程,但是我似乎做错了转换,因为我似乎无法让它正常工作。
int a, b, c;
textBox4.Text = (a + b + c).ToString();
if (comboBox1.Text == "Tzatziki")
{
a = 35;
}
else if (comboBox1.Text == "Carpaccio")
{
a = 40;
}
else if (comboBox1.Text == "Bruscetta")
{
a = 30;
}
else if (comboBox1.Text == "Shrimp Cocktail")
{
a = 40;
}
if (comboBox2.Text == "Sirloin")
{
b = 225;
}
else if (comboBox2.Text == "Lamb")
{
b = 195;
}
else if (comboBox2.Text == "Salmon")
{
b = 170;
}
else if (comboBox2.Text == "Veggy")
{
b = 100;
}
if (comboBox1.Text == "Chocolate Cake")
{
c = 45;
}
else if (comboBox1.Text == "Pancakes")
{
c = 35;
}
else if (comboBox1.Text == "Waffles")
{
c = 40;
}
else if (comboBox1.Text == "Sundae")
{
c = 38;
}
}
非常感谢C#编程的新建议:)
答案 0 :(得分:2)
为变量赋值并初始化它们:
int a = 0, b = 0, c = 0;
我认为您需要移动if / else-if
语句的这一行:
textBox4.Text = (a + b + c).ToString();
答案 1 :(得分:1)
在将整数转换为文本对应之前,您需要为其提供初始值。
你得到零的原因是因为在初始化变量(零)之后,你立即使用它们。在那种情况下,if-then-else模式是无用的。
可能的解决方法是使用switch-case
模式来简化编码, 后计算a
,b
和c
,设置文字值:
int a = 0, b = 0, c = 0;
switch(comboBox1.Text) {
case "Tzatziki" :
a = 35;
break;
case "Carpaccio" :
a = 40;
break;
case "Bruscetta" :
a = 30;
break;
case "Shrimp Cocktail" :
a = 40;
break;
}
switch(comboBox2.Text) {
case "Sirloin" :
b = 225;
break;
case "Lamb" :
b = 195;
break;
case "Salmon" :
b = 170;
break;
case "Veggy" :
b = 100;
break;
}
switch(comboBox3.Text) {
case "Chocolate Cake" :
c = 45;
break;
case "Pancakes" :
c = 35;
break;
case "Waffles" :
c = 40;
break;
case "Sundae" :
c = 38;
break;
}
textBox4.Text = (a + b + c).ToString();
你可能犯了c
的错误,因为你再次使用ComboBox1
(我希望它应该是ComboBox3
。通过使用switch-case结构,代码变得更优雅
代码的最后一个问题是,如果组合框中没有输入任何值(或者与您检查的内容不同),该怎么办。在我上面写的情况中,值将保持0
(仅对应于具有未知值的ComboBox
的值)。您可以添加defaut :
案例,以决定当时要做什么。