Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查int是否在值的范围内_Java_If Statement - Fatal编程技术网

Java 如何检查int是否在值的范围内

Java 如何检查int是否在值的范围内,java,if-statement,Java,If Statement,在特定的if else中,我必须确定给定值是否在某个范围内。条件部分如下所示: else if (a==2 && b.equalsIgnoreCase("line") && <<Here I need to search if c falls within a range>> && d) else如果(a==2&&b.equalsIgnoreCase(“行”) &&(科技及发展) 其中a是int,b是strin

在特定的
if else
中,我必须确定给定值是否在某个范围内。条件部分如下所示:

else if (a==2 && b.equalsIgnoreCase("line")
     && <<Here I need to search if c falls within a range>> && d)
else如果(a==2&&b.equalsIgnoreCase(“行”)
&&(科技及发展)

其中a是int,b是string,c是int,d是boolean。如果c在1到8之间,条件为真,否则为假。我该怎么做呢?

我想你需要这个条件来满足
c

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

惊喜惊喜,这是
c>=low&&c像这样尝试,范围1和范围2是需要检查b的范围

(c < range1 && c >  range2) ? d=true : d=false;
(crange2)?d=真:d=假;

您只需添加:

c > 1 && c < 8
c>1&&c<8
如果你觉得你的条件变得太复杂了,我建议你创建一些布尔方法来简化它们。这是一个非常温和的情况,但例如,该范围问题可以表示为:

public boolean inRange(int num)
{
    return (num > 1 && num < 8);
}
public boolean inRange(int num)
{
返回值(num>1&&num<8);
}

不幸的是,唯一的方法是使用if-else语句(据我所知)。switch语句不接受条件运算符,因此不适用于该语句。正如其他人所建议的,您可以使用单独的方法,因为这些方法允许您检查其他值是否也在范围内。但是,您可以选择以下内容,而不仅仅是此值

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

}
它看起来不太凌乱,而且会起作用(不过,您需要决定它是包含边界还是独占边界)


更改方法的原因是,它也可以在其他地方使用,使其对范围检查非常有用。

的大括号部分搜索c?如果
,则在其他地方搜索。如果值不是顺序的,我不太明白,你的意思是什么。你能给出一个例子吗?假设我想搜索c是否在{1,4,9,11,13}范围内,那么@Mistu4u在这种情况下,如果我不止一次使用它,我会创建一个
HashSet
(我称之为
set
)并使用
set.contains(c)
@Mistu4u那么这不是一个范围,而是一个集合,你应该使用
Set
。你误解了这个问题。你答案的第一部分是正确的。然而,OP不需要三元表达式,他需要一个
if
语句。试着重读这个问题。为什么
Boolean
boolean
几乎总是足够的。我个人不认为
(num>lowBound&&num
是混乱的。然而,当我在一个语句中将许多条件连接在一起时,我几乎总是拆分行。如果(a==2\\new line`&&b.equalsIgnoreCase(“line”)\\nl`&(c>1&&c<8)\\nl`&&d
,我会使用
else,这就是我的意思-不要太乱。无论如何,分割行是好的。虽然,如果视觉效果是这个人想要的,那么你也可以将它们嵌套起来-这方面的性能变化不大
(c < range1 && c >  range2) ? d=true : d=false;
c > 1 && c < 8
public boolean inRange(int num)
{
    return (num > 1 && num < 8);
}
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)