最适合处理多个IF语句
本文关键字:IF 语句 处理 | 更新日期: 2023-09-27 18:28:06
我想知道最好的方法:在我的场景中,用户可以选择1-5个选项,这取决于他们的选项,必须在这三个选项中随机选择。
假设用户选择了选项2和3,我可以写一个IF语句,说当它被选中时,做这个等等,问题是我不想为所有可能的组合写IF语句。
只是想知道最简单的方法是什么?
我想我可以选择Switch,但这也需要对每个单独的组合进行编程。
谢谢。
编辑:小示例代码
bool Option1 = false;
bool Option2 = false;
bool Option3 = false;
if (Option1 == true && Option2 == false && Option3 == false)
{
//Do Somthing
}
else if (Option1 == true && Option2 == true && Option3 == false)
{
//Do Somthing
}
else if (Option1 == true && Option2 == false && Option3 == true )
{
//Do Somthing
}
依此类推。
试着编写代码,使其与您试图建模的逻辑紧密相连。为option1
所做的选择是否改变了其他选项的含义,还是将它们作为一个组?
您可能会发现引入其他标志(例如exactlyTwoOptionsSelected
)非常有用,然后可以在分支中使用这些标志。
顺便说一下,编写if (option1 && option2)
或if (!option1 || option2)
等将比编写if (option1 == true && option2 == true)
和if(option1 == false || option2 == true)
更容易。
这取决于"// Do Somthing"
的实际作用。
如果选项之间有一些代码重复,那么将其放入函数中并调用它。或者将重复的代码分离成一个独立的if ( Option1 ) { ... }
块。
正如您所提到的,您可以将有效的组合转换为枚举(5位是32个值),并将其放入switch语句中。
我会选择嵌套的if。如果它们变得太不可读,你总是可以将它们分组到函数中:
if( option1 )
{
if ( option2 )
{
if ( option3 )
{
doThing2();
}
else
{
doThing1(); // no more alternatives
}
}
else
{
doThing1(); // need to do the same as above
}
}
else
{
... more or less the same as above
}
我认为这就是它的初衷。有了优秀的编辑,它变得很容易阅读。。。
hth
MNario
Console.WriteLine("Enter first number: ");
int first = int.Parse(Console.ReadLine());
Console.WriteLine("Enter second number: ");
int second = int.Parse(Console.ReadLine());
if (first % second == 0)
{
Console.WriteLine("Number 1 is multiple of number 2.");
}
else if (second % first == 0)
{
Console.WriteLine("Number 2 is multiple of number 1.");
}
else
{
Console.WriteLine("Numbers are not multiples.");
}
Console.ReadKey();