所以,我正在创建一个游戏,当用户的玩家点击一个位置(有很多)时,我希望游戏结束。
我有两个像这样的ArrayList
。
ArrayList<Integer> ex = new ArrayList<Integer>(), ey = new ArrayList<Integer>();
并且“坏”方 block (如果用户击中它就会死亡)会在他们获得加电后出现,因此经常会添加整数
。
我尝试执行一个 for 循环
来遍历大小(如下所示),但这不起作用,因为 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 的所有数字存储在一个变量中?
最佳答案
您对“enhanced for”的语义感到困惑
for(int i = 0; i < ex.size() - 1; i++) {
将值0
、1
、2
...放入i
中,直到ex .size()-1
。 i
作为索引
for(int i : ex) {
将值 ex.get(0)
、ex.get(1)
放入 i
中。这是内容。
在第二种情况下,逻辑应该是
int j = 0;
for (int i : ex) {
if(x.get(0) == i && y.get(0) == ey.get(j)){
..
}
j++;
}
在这种情况下,增强的 for 没有什么意义。
如果它可以帮助您可视化,那么使用增强的 for 变量必须始终是数组/迭代器的类型(在这种情况下,恰好您可以将 Integer
自动装箱为 int
)
关于java - 如何将ArrayList中的每个数字放入变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27179744/