以防万一,这将转化为:
robots[0].y == y?
robots[1].y == y?
robots[2].y == y?
等...
与x相同的事情。
我知道必须有这样做的方法,但我的语法很糟糕。这是我尝试过的:
if(robots[].y == y && robots[].x == x){
//SOMETHING HAPPENS
}
答案 0 :(得分:0)
如果robots数组包含基本类型(或自动装箱类型)数据,则可以使用==符号, 但是,如果机器人包含机器人,则必须使用equals方法,除非您想要比较两个参考对象,否则您还需要使用==符号。
for(int i=0;i<robots.length;i++)
if (robots[i]== y ) // To compare primitives or objects reference
for(int i=0;i<robots.length;i++)
if (robots[i].equals (y )) // To compare objects
答案 1 :(得分:0)
使用Java 8+ Stream
(s)您可能会检查每个机器人r
是否匹配(allMatch
)
if (Stream.of(robots).allMatch(r -> r.x == x && r.y == y)) {
//SOMETHING HAPPENS
}
或许您打算做一些 机器人匹配的事情,在这种情况下filter
。例如,打印,如
Stream.of(robots).filter(r -> r.x == x && r.y == y).forEach(System.out::println);
答案 2 :(得分:0)
使用循环遍历数组。我假设你的数组中有y个元素。我不知道是什么,所以我将在这个例子中使用一个int。如果您发表评论我可以帮助您,如果y是不同的数据类型。比较更高级的数据类型通常不使用&#34; ==&#34;
int y = 0; //set y equal to whatever integer you want to check
for(int i = 0; i < robots.size; i++){
if(robots[i] == y){
//something happens
}
}
答案 3 :(得分:0)
你可以使用这样的东西,你唯一需要添加的是for循环:
//robot is your object type
robot robots[]; // assuming you set values for this guy
robot _compare;
_compare.x = 5;
_compare.y = 10;
for (robot rob: robots)
if (rob.y == _compare.y && rob.x == _compare.x)
// Do something
答案 4 :(得分:0)
您可以选择通过实用程序类使用反射。
import java.lang.reflect.Field;
public final class Util {
public static boolean equalsAll(Object[] array, String fieldName, Object keyField) {
boolean result = false;
for (Object item : array) {
// get class variables
Field[] fields = item.getClass().getDeclaredFields();
for (Field field : fields) {
// check for field-name
if (!field.getName().equals(fieldName)) {
continue;
}
try {
// check for object equality
field.setAccessible(true);
Object object = field.get(item);
if (object != null && object.equals(keyField)) {
result = true;
continue;
}
} catch (Exception e) {
}
}
if (!result) {
return false; // no matching field name/type.
}
}
return result;
}
}
示例语法/用法:
if(Util.equalsAll(robots, "y", y) && Util.equalsAll(robots, "x", x)) {
//do something
}