Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将ArrayList中的每个数字放入变量中_Java_Arrays_List_Arraylist_Processing - Fatal编程技术网

Java 如何将ArrayList中的每个数字放入变量中

Java 如何将ArrayList中的每个数字放入变量中,java,arrays,list,arraylist,processing,Java,Arrays,List,Arraylist,Processing,所以,我正在创建一个游戏,当用户的玩家点击一个位置(有很多)时,我希望游戏结束 我有两个像这样的ArrayLists ArrayList<Integer> ex = new ArrayList<Integer>(), ey = new ArrayList<Integer>(); 如果我像这样循环遍历整个arrayList (int i : ex) 然后在开始游戏时,它会给我以下错误: Exception in thread "Animation Threa

所以,我正在创建一个游戏,当用户的玩家点击一个位置(有很多)时,我希望游戏结束

我有两个像这样的
ArrayLists

ArrayList<Integer> ex = new ArrayList<Integer>(), ey = new ArrayList<Integer>();
如果我像这样循环遍历整个
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的所有数字存储在一个变量中?

您会对“增强型for”的语义感到困惑

将值
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时,变量必须始终是数组/迭代器的类型(在这种情况下,恰好可以将outbox
Integer
自动输出到
int

您对“增强型for”的语义感到困惑

将值
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,变量必须始终是数组/迭代器的类型(在本例中,您可以将整型自动输出到
int

据我所知,您有一个x,y网格,其中存在导致用户死亡的坐标。当用户在网格中移动时,您需要检查他们当前所在的正方形是否为坏正方形

与其使用两个ArrayList,不如将其存储为一个数组

类网格{
私有int[][]空间;
公共电网(int xdim、int ydim){
空格=新整数[xdim][ydim];

对于(int x=0;x,据我所知,您有一个x,y网格,其中有导致用户死亡的坐标。当您的用户在网格中移动时,您希望检查他们当前所在的正方形是否为坏正方形

与其使用两个ArrayList,不如将其存储为一个数组

类网格{
私有int[][]空间;
公共电网(int xdim、int ydim){
空格=新整数[xdim][ydim];

for(int x=0;xDid)在循环之前是否测试数组列表大小?如果出现IndexOutOfBoundsException,则列表可能为空。请在for循环之前尝试System.out.print(ex.size());您应该提供一些更详细的信息。什么是
x
,什么是
y
(对象o:ArrayList)是使用迭代器循环遍历ArrayList的正确方法。@DavidJones,x&y存储角色的位置,ex和ey存储敌人位置,而不是存储两个可能彼此不同步的ArrayList,我强烈建议将x,y坐标封装在一个类中,例如
坐标(x,y)
或使用现有的
类。然后您可以拥有一个
ArrayList
。此外,当循环
i
将错过列表中的最后一项(如果不是预期的)啊,是的,这是真的,我很快就会这样做,谢谢!我没有像我应该的那样有条理!在循环之前你测试过数组列表大小吗?如果你得到IndexOutOfBoundsException,列表可能是空的。请尝试System.out.print(ex.size());在for循环之前。您应该提供一些更详细的信息。什么是
x
,什么是
y
?什么是
ex
ey
store?`for(对象o:ArrayList)是使用迭代器循环遍历ArrayList的正确方法。@DavidJones,x&y存储角色的位置,ex和ey存储敌人位置,而不是存储两个可能彼此不同步的ArrayList,我强烈建议将x,y坐标封装在一个类中,例如
坐标(x,y)
或使用现有的
类。然后您可以拥有一个
ArrayList
。此外,当循环
i
将错过列表中的最后一项(如果不是预期的)啊,是的,那是真的,我很快就会这么做的,谢谢你!我没有像我应该的那样有条理!哇,非常感谢你!像符咒一样工作,我以前从未见过这种用法,所以我很高兴我学到了一些东西。哇,非常感谢你!像符咒一样工作,我以前从未见过这种用法,所以我很高兴我学到了一些东西。这实际上是一个非常好的主意,我会的当然,添加这个并亲自尝试!谢谢添加这个。这实际上是一个非常好的主意,我一定会添加这个并亲自尝试!谢谢添加这个。
for(int i : ex) {
int j = 0;
for (int i : ex) {
  if(x.get(0) == i && y.get(0) == ey.get(j)){
    ..
  }
  j++;
}
class Grid {

    private int[][] spaces;

    public Grid(int xdim, int ydim) {
        spaces = new int[xdim][ydim];
        for (int x=0; x<xdim; x++) {
            for (int y=0; y<ydim; y++) {
                spaces[x][y] = 0;
            }
        }
    }

    private void addBadSpace(int x, int y) {
        spaces[x][y] = 999;
    }

    private boolean isBadSpace(int x, int y) {
        return (spaces[x][y] != 0);
    }

}