Java 确定导致执行if语句的条件

Java 确定导致执行if语句的条件,java,Java,因此,我有一个if语句,如下所示: List<Integer> portsInUse = new ArrayList<Integer>(); . . . if(portsInUse.contains((Integer) newPort1) || portsInUse.contains((Integer) newPort2){ fail(_____, "This port is already in use."); } 或者,第三种选择,我应该

因此,我有一个if语句,如下所示:

List<Integer> portsInUse = new ArrayList<Integer>();
. . .
if(portsInUse.contains((Integer) newPort1) 
        || portsInUse.contains((Integer) newPort2){

    fail(_____, "This port is already in use.");
}
或者,第三种选择,我应该打破这样的条件:

List<Integer> portsInUse = new ArrayList<Integer>();
. . .
boolean port1 = portsInUse.contains((Integer) newPort1);
boolean port2 = portsInUse.contains((Integer) newPort2);
if(port1 || port2){
    if(port1)
        fail("newPort1", "This port is already in use.");
    else
        fail("newPort2", "This port is already in use.");
}
List<Integer> portsInUse = new ArrayList<Integer>();
. . .
if(portsInUse.contains((Integer) newPort1) {
    fail("newPort1", "This port is already in use.");
}
if(portsInUse.contains((Integer) newPort2) {
    fail("newPort2", "This port is already in use.");
}
List-portsInUse=new-ArrayList();
. . .
if(portsInUse.contains((整数)newPort1){
失败(“newPort1”,“此端口已在使用中”);
}
if(portsInUse.contains((整数)newPort2){
失败(“newPort2”,“此端口已在使用中”);
}
我肯定我把事情弄得太复杂了,不过先谢谢你。

第四种选择

List<Integer> portsInUse = new ArrayList<Integer>();
. . .
if(portsInUse.contains((Integer) newPort1) {
    fail("newPort1", "This port is already in use.");
}
else if(portsInUse.contains((Integer) newPort2) {
    fail("newPort2", "This port is already in use.");
}else{
    //No ports in use
}
List<Integer> portsInUse = new ArrayList<Integer>();
. . .
if(portsInUse.contains((Integer) newPort1) {
    if(portsInUse.contains((Integer) newPort2) {
        //both ports in use
    }else{
        //port 1 in use
    }
}
else if(portsInUse.contains((Integer) newPort2) {
    //Port 2 in use
}else{
    //No ports in use
}
List-portsInUse=new-ArrayList();
. . .
if(portsInUse.contains((整数)newPort1){
失败(“newPort1”,“此端口已在使用中”);
}
else if(portsInUse.contains((整数)newPort2){
失败(“newPort2”,“此端口已在使用中”);
}否则{
//没有正在使用的端口
}
第五种选择

List<Integer> portsInUse = new ArrayList<Integer>();
. . .
if(portsInUse.contains((Integer) newPort1) {
    fail("newPort1", "This port is already in use.");
}
else if(portsInUse.contains((Integer) newPort2) {
    fail("newPort2", "This port is already in use.");
}else{
    //No ports in use
}
List<Integer> portsInUse = new ArrayList<Integer>();
. . .
if(portsInUse.contains((Integer) newPort1) {
    if(portsInUse.contains((Integer) newPort2) {
        //both ports in use
    }else{
        //port 1 in use
    }
}
else if(portsInUse.contains((Integer) newPort2) {
    //Port 2 in use
}else{
    //No ports in use
}
List-portsInUse=new-ArrayList();
. . .
if(portsInUse.contains((整数)newPort1){
if(portsInUse.contains((整数)newPort2){
//两个端口都在使用中
}否则{
//端口1正在使用中
}
}
else if(portsInUse.contains((整数)newPort2){
//端口2正在使用中
}否则{
//没有正在使用的端口
}

因为您需要确定正在使用哪个特定端口,所以第三个选项更理想。

我认为您的第三个选项是最好的,因为您避免了选项2
if(port1 | | port2)
列表portsInUse=new ArrayList();
. . .
List portsToCheck=new ArrayList();
portsToCheck.add(newPort1);
portsToCheck.add(newPort2);
...    
用于(整数端口:portsToCheck){
if(端口包含(端口)){
失败(端口+“”,“此端口已在使用。”);
}
}

您需要像以前一样将条件分离出来。两个端口都可以使用吗?如果可以,应该怎么做?您需要先决定。MRAB:是的,当然可以。当两个端口都在使用时,两个端口都会失败。看起来选项3最接近我需要的。这是仅限于两个端口,还是re be more?在可预见的未来只有两个端口。这看起来很像选项3…我不确定我是否想使用它,因为有时我可以看到两个端口都已在使用。发布第五个选项只是为了好玩…这取决于你需要完成什么。如果我有两个端口时有更多的端口,任何选项都是可以接受的使用中的端口,我可能会选择这个新选项。谢谢。一点也不担心!正如我所说的,这一切都取决于你觉得什么最可读,什么最适合你的具体情况。我只是为将来可能看到这一点的任何人提供替代方案。我喜欢这个想法,但它似乎有点复杂与其他一些选项相比,代码更短、更干净。此外,如果出现第三个新端口,则无需添加其他条件。此外,如果收到新端口列表作为参数,则无需再次触碰此代码。原始代码经过硬编码,可用于正好两个新端口。