繁体   English   中英

java-获取数组中元素的索引[错误]

[英]java - get index of element in array [error]

当我尝试接收元素的索引时,在编译时出现错误(无法在我已标记注释的代码上找到符号)。 我有以下代码:

        for (int i = 0; i < turtles.size(); i++) {

                if (turtles.get(i).getX() == 450) {

                        results.add(turtles.get(i).indexOf(i)); //this line error
                }
        }

事情是,我想将循环中检索到的乌龟的索引添加到一个名为result的新数组中。 我怎么做?

错误是在说:

找不到标志

符号:方法indexOf(int)

位置:class se.lth.cs.pt.turtle.visible.Turtle

                        results.add(turtles.get(i).indexOf(i));
                                                  > 

没有完整的错误和所有代码,我不能完全确定您要执行的操作,但是您不是只想执行此操作吗?

 results.add(i);

也许这:

 results.add(turtles.get(i));

(...检索到的乌龟的索引 i)

取决于您希望结果包含乌龟的索引还是乌龟本身。

嗨,我提供了一种您可以使用的方法

/**
     * Method to get the index of the given item from the list
     * @param stringArray
     * @param name
     * @return index of the item if item exists else return -1
     */
    public static int getIndexOfItemInArray(String[] stringArray, String name) {
        if (stringArray != null && stringArray.length > 0) {
            ArrayList<String> list = new ArrayList<String>(Arrays.asList(stringArray));
            int index = list.indexOf(name);
            list.clear();
            return index;
        }
        return -1;
    }

如果尚未初始化该数组,则必须在循环之前进行初始化。 因此,您的代码变为:

 List results = new ArrayList();

 for (int i = 0; i < turtles.size(); i++) {

            if (turtles.get(i).getX() == 450) {

                    results.add(turtles.get(i).indexOf(i));
            }
    }

顺便说一句,我希望您知道使用turtles.get(i).indexOf(i)时在做什么,因为这在您的代码中不是很明显。

编辑 :看到您编辑的问题后,我只能假设您的se.lth.cs.pt.turtle.visible.Turtle类有问题。 就像,它没有名为indexOf的方法,该方法以int作为其参数。

我相信您的问题是indexOf将对象作为参数,然后返回索引。 如果要在索引i处找到对象,则可以使用'Vector.elementAt(int index)'方法。

您应该再次重新考虑以上Joel的回答(我希望它仍然在上面!)。 您说“我要买一只乌龟了……想把乌龟的索引放到新数组中……”,看来该索引实际上已经在变量“ i”中了。 不需要额外的工作来“获取”它。

“ results.add(i)”似乎就是您想要做的。

indexOf(Object)返回该对象第一次出现的索引。

for(Turtle _turtle : turtles){

 //-- Getting index of the turtle & adding it to results

        results.add(turtles.indexOf(_turtle));
 }

基于索引检索对象(即使用i等)有时可能导致索引超出范围,并且在操作过程中也难以管理。

我通过将arraylist定义为整数类型来解决了这个问题:

ArrayList<Integer> results = new ArrayList<Integer>();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM