java如何将ArrayList中的每个数字放入变量中
所以,我正在创建一个游戏,当用户的玩家点击一个位置(有很多)时,我希望游戏结束
我有两个这样的ArrayLists
ArrayList<Integer> ex = new ArrayList<Integer>(), ey = new ArrayList<Integer>();
加电后会出现“坏”方块(如果用户碰到它就会死掉),因此经常会添加Integers
我试图通过for loop
循环大小(如下所示),但显然,这不起作用,因为i
只选择最新的大小
for(int i = 0; i < ex.size() - 1; i++) {
if(x.get(0)==ex.get(i) && y.get(0) == ey.get(i)){
gameover = true;
}
}
如果我像这样循环整个arrayList
(int i : ex)
然后在开始游戏时,它会给我以下错误:
Exception in thread "Animation Thread" java.lang.IndexOutOfBoundsException: Index: 10, Size: 1
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at snakegame.SnakeGame.draw(SnakeGame.java:113)
at processing.core.PApplet.handleDraw(PApplet.java:2386)
at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:240)
at processing.core.PApplet.run(PApplet.java:2256)
at java.lang.Thread.run(Thread.java:745)
那么,是否有办法将ArrayList的所有数字存储在一个变量中
# 1 楼答案
您对“增强型for”的语义感到困惑
将值
0
、1
、2
放入i
。。。最多ex.size()-1
i
用作索引将值
ex.get(0)
,ex.get(1)
放入i
。这是内容在第二种情况下,逻辑应该是
在这种情况下,增强的for没有什么意义
如果它有助于可视化,那么使用enhanced for时,变量必须始终是数组/迭代器的类型(在这种情况下,恰好可以自动输出
Integer
到int
)# 2 楼答案
据我所知,你有一个x,y网格,其中有导致用户死亡的坐标。当用户在网格中移动时,您需要检查他们当前所在的正方形是否为坏正方形
与其使用两个ArrayList,不如将其存储为multidimensional array
是否采用这种方法取决于应用程序和网格的大小。多维数组速度非常快,但会占用大量内存空间。如果它是一个稀疏矩阵(即很少有“坏”空间存在),并且你的网格非常大,那么有更有效的方法