if (hello == 50 || hello == 60 || hello == 70) {
是否有可能将其缩短为类似的东西?
if (hello == (50,60,70));
或类似的东西,只是为了避免不得不不断地重写同一个变量。
if (hello == 50 || hello == 60 || hello == 70) {
是否有可能将其缩短为类似的东西?
if (hello == (50,60,70));
或类似的东西,只是为了避免不得不不断地重写同一个变量。
一种可能的方法是使用集合。
Set<Integer> specialNumbers = new HashSet<Integer>();
specialNumbers.add(50);
specialNumbers.add(60);
specialNumbers.add(70);
if(specialNumbers.contains(hello)) {
//do stuff
}
不可能。你可以更喜欢写开关。
switch(hello)
{
case 50:
case 60:
case 70: // Do some thing
break;
}
怎么样
if ( 0 == ( ( ( hello / 10 ) - 5 ) / 3 ) )
另一种解决方案:
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))
但可以接受,如果您有多个具有相同类型的此类调用。
你没有节省太多,但如果你碰巧有超过 3 个整数,比如说 10 或 20 ...
if (Arrays.binarySearch (new int [] {50, 60, 70}, hello) >=0)
System.out.println ("contains!");
有多种方法可以做到这一点。
你可以建立一个新的方法
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