2

特定if-elseの では、特定の値が範囲内にあるかどうかを特定する必要があります。条件部分は次のようになります。

else if (a==2 && b.equalsIgnoreCase("line")
     && <<Here I need to search if c falls within a range>> && d)

ここで、a は int、b は文字列、c は int、d はブール値です。ここで、c が 1 から 8 の範囲内にある場合、条件は真であり、そうでない場合は偽です。どうやってやるの?

4

5 に答える 5

3

あなたにはこの条件が必要だと思いますc

(c > 1 && c < 8) // 1 and 8 are exclusive
(c => 1 && c <= 8) // 1 and 8 are inclusive

完全なサンプル

else if (a==2 && b.equalsIgnoreCase("line")
     && (c > 1 && c < 8) && d)

値が一連の値に属しているかどうかを確認する必要がある場合は、 a を使用してから、 がSetそれに属しているかどうかを確認する必要がありますc。あなたの最初の質問では、それは範囲として言及されていたため、答えでした。とにかく、これはセット内の値を確認する方法です。

Integer[] arr = {1,4,9,11,13};
Set<Integer> set = new HashSet<>(Arrays.asList(arr));
...
else if (a==2 && b.equalsIgnoreCase("line")
     && (set.contains(c)) && d)
于 2013-11-07T04:28:07.970 に答える
3

サプライズサプライズ、ですねc >= low && c <= high

アップデートに答えるには、セットを採用する必要があります

Set<Integer> validValues = new HashSet<Integer>();
validValues.add(1);
validValues.add(4);
validValues.add(9);
validValues.add(10);
validValues.add(19);

if (validValues.contains(currentVal)) {
    // do stuff
}

Java の冗長性を抑えるには、Guava の不変セットを使用できます。

Set<Integer> validValues = ImmutableSet.of(1, 4, 9, 10, 19);
于 2013-11-07T04:28:51.473 に答える
0

残念ながら、これを行う唯一の方法は if else ステートメントを使用することです (私の知る限り)。switch ステートメントは条件演算子を受け入れないため、条件演算子では機能しません。他の人が示唆しているように、メソッドとして別のメソッドを使用すると、他の値も範囲内にあるかどうかを確認できます。ただし、この値だけでなく、次のようなものを使用できます

public Boolean inRange(int num, int lowBound, int topBound)
{
    return (num > lowBound && num < topBound);

}

このようにコードで使用するだけです

else if (a==2 && b.equalsIgnoreCase("line")
     && inBound(c, 1, 8) && d)

それはあまり乱雑に見えず、機能します (ただし、境界が包括的か排他的かを決定する必要があります)。

メソッドが変更された理由は、他の場所でも使用できるため、範囲チェックに役立ちます。

于 2013-11-07T04:41:47.653 に答える
0

このようにしてみてください。範囲1と範囲2は、チェックする必要がある範囲ですb.

(c < range1 && c >  range2) ? d=true : d=false;
于 2013-11-07T04:33:12.670 に答える
0

以下を追加するだけです。

c > 1 && c < 8

条件が複雑になりすぎていると感じた場合は、条件を少し単純化するブール メソッドを作成することをお勧めします。これは非常に中程度のケースですが、たとえば、この範囲の問題は次のように表すことができます。

public boolean inRange(int num)
{
    return (num > 1 && num < 8);
}
于 2013-11-07T04:35:22.383 に答える