![](/img/trans.png)
[英]How to write better else if condition by using less AND and OR logical operator?
[英]Checkbox with if else condition and && logical operator
我不知道我的状况如何。 我知道该声明是正确的,但存在错误,而且我真的不知道为什么我的代码无法正常工作。 选中复选框1和2时,它不起作用。 它只能在单个条件下工作
if (chk1.Checked == true)
{
Toast.MakeText(this, "Extra Rice", ToastLength.Short).Show();
}
这是我的代码:
if (chk1.Checked == true)
{
Toast.MakeText(this, "Extra Rice", ToastLength.Short).Show();
}
else if ((chk1.Checked == true) && (chk2.Checked == true))
{
Toast.MakeText(this, "full rice & Extra Sauce", ToastLength.Short).Show();
}
else if ((chk1.Checked == true) && (chk3.Checked == true))
{
Toast.MakeText(this, "full rice & Extra Rice", ToastLength.Short).Show();
}
else if ((chk2.Checked == true) && (chk3.Checked == true))
{
Toast.MakeText(this, "Extra Sauce & Extra Rice", ToastLength.Short).Show();
}
else if ((chk1.Checked == true) && (chk2.Checked == true) && (chk3.Checked == true))
{
Toast.MakeText(this, "full rice | Extra Sauce | Extra Rice", ToastLength.Short).Show();
}
更改ElseIF
语句的顺序,因为无论何时选中chk1
无论用户选中chk2还是chk3,都会执行第一条语句。 同样CheckBox.Checked
是bool
属性,因此无需将其与true或false进行比较
if (chk1.Checked && chk2.Checked && chk3.Checked)
{
Toast.MakeText(this, "full rice | Extra Sauce | Extra Rice", ToastLength.Short).Show();
}
else if (chk1.Checked && chk2.Checked )
{
Toast.MakeText(this, "full rice & Extra Sauce", ToastLength.Short).Show();
}
else if (chk1.Checked && chk3.Checked )
{
Toast.MakeText(this, "full rice & Extra Rice", ToastLength.Short).Show();
}
else if (chk2.Checked && chk3.Checked)
{
Toast.MakeText(this, "Extra Sauce & Extra Rice", ToastLength.Short).Show();
}
else if (chk1.Checked)
{
Toast.MakeText(this, "Extra Rice", ToastLength.Short).Show();
}
您的第一个条件是使else if
两个条件无效。
当您检查chk1时,它将始终处于第一个条件。
您应该执行以下操作:
if (chk1.Checked == true)
{
if ((chk2.Checked == true)) //chk1 and chk2 are checked
{
Toast.MakeText(this, "full rice & Extra Sauce", ToastLength.Short).Show();
}
else //only the chk1 is checked
{
Toast.MakeText(this, "Extra Rice", ToastLength.Short).Show();
}
}
希望你能明白。
您可以重新排序您的条件(检查其他答案),将限制性更强的规则放在第一位,但是我希望提出一种更干净,更易于维护的解决方案。
List<string> additions = new List<string>();
if (chk1.Checked) additions.Add("Full rice");
if (chk2.Checked) additions.Add("Extra Sauce");
if (chk3.Checked) additions.Add("Extra Rice");
if (additions.Count > 0)
{
string text = String.Join(" & ", additions);
Toast.MakeText(this, text, ToastLength.Short).Show();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.