Java 如何从ArrayList获取数组<&燃气轮机; ArrayList队列=新建ArrayList(); if(有效(x、y、颜色填充、颜色边界、图形)){ int[]添加=新的int[2]; 加[0]=x; 加上[1]=y; queue.add(添加); } 而(!queue.isEmpty()){ int[]get=queue.get(queue.size()); graphics.putPixel(获取[0],获取[1],彩色填充); queue.remove(queue.size());…}

Java 如何从ArrayList获取数组<&燃气轮机; ArrayList队列=新建ArrayList(); if(有效(x、y、颜色填充、颜色边界、图形)){ int[]添加=新的int[2]; 加[0]=x; 加上[1]=y; queue.add(添加); } 而(!queue.isEmpty()){ int[]get=queue.get(queue.size()); graphics.putPixel(获取[0],获取[1],彩色填充); queue.remove(queue.size());…},java,arrays,arraylist,Java,Arrays,Arraylist,嘿,我在从ArrayList queue=new ArrayList()获取数组时遇到问题;。有吗 建议我在哪里犯了错误?你的问题不太清楚,但我认为问题出在下面一行 ArrayList<int[]> queue = new ArrayList<>(); if (isValid(x, y, colorFill, colorBoundary, graphics)){ int[] add = new int[2]; ad

嘿,我在从ArrayList queue=new ArrayList()获取数组时遇到问题;。有吗
建议我在哪里犯了错误?

你的问题不太清楚,但我认为问题出在下面一行

ArrayList<int[]> queue = new ArrayList<>();
       if (isValid(x, y, colorFill, colorBoundary, graphics)){
           int[] add = new int[2];
           add[0]=x;
           add[1]=y;
           queue.add(add);

       }
       while (!queue.isEmpty()){
          int[] get = queue.get(queue.size());
          graphics.putPixel(get[0],get[1],colorFill);
          queue.remove(queue.size());...}
这是行不通的,因为在Java中,索引总是以“0”开头。因此,最后一个元素的索引将是
queue.size()-1
。因此,上面的代码将返回
索引越界异常

按如下方式更正代码

int[] get = queue.get(queue.size());

你的问题不太清楚,但我认为问题出在下面这一行

ArrayList<int[]> queue = new ArrayList<>();
       if (isValid(x, y, colorFill, colorBoundary, graphics)){
           int[] add = new int[2];
           add[0]=x;
           add[1]=y;
           queue.add(add);

       }
       while (!queue.isEmpty()){
          int[] get = queue.get(queue.size());
          graphics.putPixel(get[0],get[1],colorFill);
          queue.remove(queue.size());...}
这是行不通的,因为在Java中,索引总是以“0”开头。因此,最后一个元素的索引将是
queue.size()-1
。因此,上面的代码将返回
索引越界异常

按如下方式更正代码

int[] get = queue.get(queue.size());

返回此列表中指定位置的元素。
抛出:
IndexOutOfBoundsException-如果索引超出范围(索引<0 | |索引>=size())

在你的问题中,当你写在下面一行时:

int[] get = queue.get(queue.size()-1);
然后它违反了
index>=size()
条件,因为您正在传递queue.size()

传递索引值b/w
0
queue.size()-1
以获取元素

例如:

queue.get(queue.size());

返回此列表中指定位置的元素。
抛出:
IndexOutOfBoundsException-如果索引超出范围(索引<0 | |索引>=size())

在你的问题中,当你写在下面一行时:

int[] get = queue.get(queue.size()-1);
然后它违反了
index>=size()
条件,因为您正在传递queue.size()

传递索引值b/w
0
queue.size()-1
以获取元素

例如:

queue.get(queue.size());

如果要访问/删除最后一个元素,您可能应该将
queue.size()
更改为
queue.size()-1
。我记得
ArrayList
不能是优先级类型,请尝试使用
Integer[]
(而不是int[])@AsfK an
int[]
不是原语,它继承自
对象
,因此,它是泛型集合的合法基类型。当您说“我有问题”时,请同时添加问题所在。你收到错误信息了吗?如果是这样,请将其包含在您的问题中。你有没有预料不到的行为?然后,请回答问题,并添加您预期的行为和发生的情况。这是否回答了您的问题?如果要访问/删除最后一个元素,您可能应该将
queue.size()
更改为
queue.size()-1
。我记得
ArrayList
不能是优先级类型,请尝试使用
Integer[]
(而不是int[])@AsfK an
int[]
不是原语,它继承自
对象
,因此,它是泛型集合的合法基类型。当您说“我有问题”时,请同时添加问题所在。你收到错误信息了吗?如果是这样,请将其包含在您的问题中。你有没有预料不到的行为?然后,请回答问题,并添加您预期的行为和发生的情况。这是否回答了您的问题?