Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.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 如何将y变量与对象数组中的所有y变量进行比较?_Java - Fatal编程技术网

Java 如何将y变量与对象数组中的所有y变量进行比较?

Java 如何将y变量与对象数组中的所有y变量进行比较?,java,Java,以防万一,这将转化为: robots[0].y == y? robots[1].y == y? robots[2].y == y? 等等 x也是一样 我知道一定有办法做到这一点,但我的语法不好。以下是我尝试过的: if(robots[].y == y && robots[].x == x){ //SOMETHING HAPPENS } 如果robots数组包含基本类型(或自动装箱类型)数据,则可以使用==符号, 但是,如果robots包含robots,则必须

以防万一,这将转化为:

robots[0].y == y?
robots[1].y == y?
robots[2].y == y? 
等等

x也是一样

我知道一定有办法做到这一点,但我的语法不好。以下是我尝试过的:

if(robots[].y == y && robots[].x == x){
        //SOMETHING HAPPENS
}

如果robots数组包含基本类型(或自动装箱类型)数据,则可以使用==符号, 但是,如果robots包含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
for(inti=0;i使用Java8+(s)您可以检查每个robot
r
是否匹配()如下

或者你想在机器人匹配的地方做点什么,在这种情况下

Stream.of(robots).filter(r -> r.x == x && r.y == y).forEach(System.out::println);

使用循环遍历数组。我假设数组中有y个元素。我不确定y是什么,因此在本例中我将使用int。如果您对y进行注释,我可以帮助您确定y是否为不同的数据类型。比较更高级的数据类型通常不使用“==”

int y=0;//将y设置为要检查的任何整数
for(int i=0;i
您可以使用类似的方法,只需添加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

您可以通过实用程序类选择使用反射

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
}

请更详细地解释您的问题,并提供背景信息。我想我知道您想问什么。如果您想将每个元素的值与特定值进行比较,可以使用某种循环。
If
语句的布尔表达式中的语法无效。
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
}