我正在尝试将pathfind系统应用到我的一个游戏中, 所以我遇到了以下问题。
我来到这里一个很好的ArrayList:
ArrayList<PVector> path = new ArrayList<>();
现在它是空的,稍后在过程中它填充了PVector:
{5.0,6.0,0},{5.0,7.0,0},{5.0,8.0,0},{5.0,9.0,0}
多数民众赞成不是吗?但我无法使用它,因为我只需要{5.0,6.0,0}
....
我用path.get(0)
尝试了...我只得到{5.0,6.0,0}
...所以我在这里找到了新的东西:
path.get(0)[0];
也没有用...因为表达式类型需要是一个数组但是它被解析为一个对象
那么如何从索引中获取单个条目? :/
如何从5.0
中获取{5.0,6.0,0}
?
答案 0 :(得分:1)
所以你有ArrayList
个PVector
,对吧?这意味着,当您get
ArrayList
时,您会收到PVector
。我不知道PVector,但是(希望)PVector
中有一个方法来获取第一个int(x()
或者其他东西)。
答案 1 :(得分:1)
对于这类问题,the reference是您最好的朋友。
但请记住,path.get(0)
会返回PVector
。然后,您可以使用the PVector API来获取其位置。像这样:
ArrayList<PVector> path = new ArrayList<PVector>();
//add PVectors to path
PVector p = path.get(0);
float x = p.x;
请注意,我使用<PVector>
泛型,以便ArrayList
知道它所拥有的对象类型。 p
变量不是必需的;我只是用它来表明path.get()
返回PVector
。你也可以在一行中完成:
ArrayList<PVector> path = new ArrayList<PVector>();
//add PVectors to path
float x = path.get(0).x;
答案 2 :(得分:0)
声明变量时,请始终使用您将存储在其中的最具体类型的泛型类型进行参数化:
// Declaration:
List<PVector> path = new ArrayList<PVector>();
// Storing:
path.add(new PVector(...));
path.add(new PVector(...));
...
// Reading:
PVector pVector=path.get(n);
pVector.get(...)
通过这种方式,当您从列表中读取项目时,您将获得与您存储的相同类型的对象。