gpt4 book ai didi

java - 从 ArrayList 项目中检索数据

转载 作者:行者123 更新时间:2023-12-02 04:49:16 25 4
gpt4 key购买 nike

提前道歉,我是 Java 新手,大部分时间都在使用别人的代码,所以请耐心等待。我环顾四周,但找不到任何可以帮助我解决问题的东西

我从一个方法中检索了一个 ArrayList,然后尝试编写一个 foreach 循环来从下面的“观察”中检索特定的数据。

无论出于何种原因,在通过 ArrayList 访问时,它都不允许我检索存储在观察中的任何数据。

    ArrayList<Observation>[] npcPositions = stateObs.getNPCPositions();
Vector2d playerPosition = stateObs.getAvatarPosition();

int npcCount = npcPositions.length;

for (int i = 0; i <= npcCount; i++)
{

if (playerPosition.x == npcPositions[i].position)
{

}
}

位置是观察中的一个值,但我收到错误,它无法解析或不是字段。观察类的一部分如下,我无法访问任何这些变量来执行我当前正在做的事情。

public class Observation implements Comparable<Observation>
{

/**
* Category of this observation (static, resource, npc, etc.).
*/
public int category;

/**
* Type of sprite of this observation.
*/
public int itype;

/**
* unique ID for this observation
*/
public int obsID;

/**
* Position of the observation.
*/
public Vector2d position;

/**
* Reference to the position used for comparing this
* observation with others.
*/
public Vector2d reference;

那么我需要使用什么来访问这些变量。我注意到,当我想存储来自 stateObs.getNPCPositions 的数据时,我必须使用 [],这似乎是其他示例对我不起作用的原因,但我不确定如何修复它。

更新

最初的问题似乎已经解决,但是当尝试检索 ArrayList 的长度时,我得到了 nullpointerexception。我怎样才能获得每次都能在循环中运行的项目数量。

更新#2

    /**
* Returns a list of observations of NPC in the game. As there can be
* NPCs of different type, each entry in the array corresponds to a sprite type.
* Every ArrayList contains a list of objects of type Observation.
* Each Observation holds the position, unique id and
* sprite id of that particular sprite.
*
* @return Observations of NPCs in the game.
*/
public ArrayList<Observation>[] getNPCPositions()
{
return model.getNPCPositions(null);
}


/**
* Returns a list of observations of NPC in the game. As there can be
* NPCs of different type, each entry in the array corresponds to a sprite type.
* Every ArrayList contains a list of objects of type Observation, ordered asc. by
* distance to the reference passed. Each Observation holds the position, sprite type id and
* sprite id of that particular sprite.
*
* @param reference Reference position to use when sorting this array,
* by ascending distance to this point.
* @return Observations of NPCs in the game.
*/
public ArrayList<Observation>[] getNPCPositions(Vector2d reference)
{
return model.getNPCPositions(reference);
}

最佳答案

这个:

ArrayList<Observation>[] npcPositions = stateObs.getNPCPositions();

正在获取一个ArrayList数组。您可以使用以下方法从数组的索引 i 获取单个 ArrayList:

ArrayList<Observation> list = npcPositions[i];

您可以使用以下方法获取列表索引 j 处的Observation:

Observation obs = list.get(j);

或者您可以组合使用它们:

Observation obs = npcPositions[i].get(j);

关于java - 从 ArrayList 项目中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29390038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com