2
if (hello == 50 || hello == 60 || hello == 70) {

是否有可能将其缩短为类似的东西?

if (hello == (50,60,70));

或类似的东西,只是为了避免不得不不断地重写同一个变量。

4

6 回答 6

7

一种可能的方法是使用集合。

Set<Integer> specialNumbers = new HashSet<Integer>();

specialNumbers.add(50);
specialNumbers.add(60);
specialNumbers.add(70);

if(specialNumbers.contains(hello)) { 
//do stuff 
}
于 2012-04-18T23:05:52.997 回答
5

不可能。你可以更喜欢写开关。

switch(hello)
{
   case 50:
   case 60:
   case 70: // Do some thing
            break;
}
于 2012-04-18T23:04:12.180 回答
2

怎么样

if ( 0 == ( ( ( hello / 10 ) - 5 ) / 3 ) ) 
于 2012-04-18T23:11:00.887 回答
1

另一种解决方案:

if (Arrays.asList (new Integer [] {50, 60, 70}).contains (hello))
    System.out.println ("contains!");

您必须在 Array 声明中使用 Intger,而不是 int。许多样板代码,但在增长时,它可能很有用。

最初的昂贵方式是将参数作为对象椭圆的方法:

public static boolean contains (Object sample, Object... os) {
    for (Object o: os) 
        if (o.equals (sample))
            return true;
    return false;
}

使用便宜:

    if (ArrayCheck.contains (hello, 50, 60, 70)) 
        System.out.println ("contains!");

采用 an 的类型安全方法会更好,但使用成本更高 - 您必须首先为您的类型生成 ArrayCheck 的实例:

public class ArrayCheck <T>
{
    public boolean contains (T sample, T... ts) {
        for (T t: ts) 
            if (t == sample) 
                return true;
        return false;
    }
 // ...
    ArrayCheck <Integer> ac = new ArrayCheck <Integer> ();
    if (ac.contains (hello, 50, 60, 70)) 

但可以接受,如果您有多个具有相同类型的此类调用。

于 2012-04-19T16:20:16.017 回答
0

你没有节省太多,但如果你碰巧有超过 3 个整数,比如说 10 或 20 ...

if (Arrays.binarySearch (new int [] {50, 60, 70}, hello) >=0)
    System.out.println ("contains!");
于 2012-04-19T15:52:05.810 回答
0

有多种方法可以做到这一点。

你可以建立一个新的方法

if(checkValue(hello, 50, 60, 70))
{
   // something
}

private boolean checkValue(data, Integer a, Integer b, Integer c)
{
   return (hello == a || hello == b || hello == c) 
}

或者你可以建立一个集合

但你不能真正绕过必须在某个地方进行检查。

并且 java 不支持运算符重载,所以在 C++ 中是这样的

if( hello == (50, 60, 70))

将是有效的(如果你重载 == )但不是 java

于 2012-04-18T23:10:00.607 回答