我们有n个变量,X = {x1,x2,...xn}它们不属于任何结构.
以python为例,我可以这样做: if (x1 == x2 == x3 == xn):
在java中我必须这样做: if((x1 == x2) && (x2 == x3) && (x3 == xn)):
您是否知道改进此语法的简单方法?(想象一下很长的变量名称和很多)
谢谢.
Jon*_*eet 29
如果你有很多这些变量,你是否考虑将它们放在一个集合中而不是将它们作为单独的变量?那时有各种选择.
如果你发现自己做了很多,你可能想要编写辅助方法,可能使用varargs语法.例如:
public static boolean areAllEqual(int... values)
{
if (values.length == 0)
{
return true; // Alternative below
}
int checkValue = values[0];
for (int i = 1; i < values.length; i++)
{
if (values[i] != checkValue)
{
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
由glowcoder提供的替代方案是强制存在至少一个值:
public static boolean areAllEqual(int checkValue, int... otherValues)
{
for (int value : otherValues)
{
if (value != checkValue)
{
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
在任何一种情况下,使用:
if (HelperClass.areAllEqual(x1, x2, x3, x4, x5))
{
...
}
Run Code Online (Sandbox Code Playgroud)
cor*_*iKa 13
您可以创建一个这样的实用工具方法:
public boolean allEqual(Object... objs) {
if(objs.length < 2) return true; // 0 or 1 objects are all equal
Object key = objs[0]; // pick one
for(Object o : objs) if(!o.equals(key)) return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
另一种选择是
public boolean allEqual(Object key, Object... objs) {
for(Object o : objs) if(!o.equals(key)) return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
简化许多样板逻辑.然后就去吧
if(allEqual(x,x1,x2,x3))
Run Code Online (Sandbox Code Playgroud)
显然这两者是相互排斥的(它们具有特征性的暧昧),但你可以拥有
allEqual和allEqualWithKey
与@ Jon的解决方案类似,但更短.
public static boolean areAllTheSame(int value, int... values) {
for (int i: values) if(value != i) return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
您可以编写一个方法,使这看起来不那么麻烦:
boolean areAllEqual(Object... values) {
if (values.length < 2) {
return true;
}
for (int i = 1; i < values.length; i++) {
if (!values[i].equals(values[0])) {
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
像这样使用它:
if (areAllEqual(x1, x2, x3, x4, x5)) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
编辑太慢了...!:-(