2

したがって、次のような if ステートメントがあります。

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

    fail(_____, "This port is already in use.");
}

newPort1HttpServletRequestからnewPort2それらを掘り出すことによって割り当てられます。 fail(String parameter, String message)何か問題が発生したことをユーザーに警告する内部メソッドです。

私がやりたいのは、if ステートメントがトリガーされた条件を特定し、それに応じて失敗メッセージを設定できるようにすることです。私はそれを行うことができますか、それとも次のようなことをしなければなりませんか?

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.");
}

または、3 番目のオプションとして、次のように条件を分割する必要があります。

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.");
}

私は物事を複雑にしすぎていると確信していますが、事前に感謝します。

4

4 に答える 4

2

4番目のオプション...

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
}

5番目のオプション...

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
}
于 2012-08-14T14:57:48.097 に答える
0

どの特定のポートが使用されているかを判断する必要があるため、3番目のオプションの方が理想的です。

于 2012-08-14T14:58:16.130 に答える
0

オプション2の余分な条件を回避するため、3番目のオプションが最適だと思います。if(port1 || port2)

于 2012-08-14T14:58:38.097 に答える
0
List<Integer> portsInUse = new ArrayList<Integer>();
. . .
List<Integer> portsToCheck = new ArrayList<Integer>();

portsToCheck.add(newPort1);
portsToCheck.add(newPort2);
...    

for (Integer port: portsToCheck){
    if (portsInUse.contains(port)) {
        fail(port+"", "This port is already in use.");  
    }
}
于 2012-08-14T15:08:28.037 に答える