[英]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.