Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.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_Java_Arraylist - Fatal编程技术网

正在检索数组列表中的最后一个对象?JAVA

正在检索数组列表中的最后一个对象?JAVA,java,arraylist,Java,Arraylist,我有一个ArrayList,bag,它存储Bean类型的对象,一个包含Bean颜色的类,存储在布尔值中。如果我想取回袋子里的最后一个豆子来检查它是什么颜色,我该怎么做 if (((Bean)bag.get(bag.size())).getColor() == true) blackCounter++; else whiteCounter++; 在这里,我试图检查包中的最后一个豆子是黑色还是白色,然后添加到一个计数器中,该计数器存储当前包中每种颜色豆子的总数。然而,每次运行索引1时,

我有一个ArrayList,bag,它存储Bean类型的对象,一个包含Bean颜色的类,存储在布尔值中。如果我想取回袋子里的最后一个豆子来检查它是什么颜色,我该怎么做

if (((Bean)bag.get(bag.size())).getColor() == true)
   blackCounter++;
else
   whiteCounter++;
在这里,我试图检查包中的最后一个豆子是黑色还是白色,然后添加到一个计数器中,该计数器存储当前包中每种颜色豆子的总数。然而,每次运行索引1时,我都会得到一个OutOfBounds异常。我怎样才能解决这个问题?(注:本周我们刚在CS课上学习了ArrayList,所以我对这个概念还不是100%,尽管我想我已经开始掌握了。)

编辑:此包的大小变化很大,有时为0。然而,BlueJ说,当大小为1时,我会得到错误,我试图访问的索引也是如此

原来的问题解决了。后续问题:当我运行程序时,一切都会正常,但它有时会给我一个越界异常,下面的代码段也是如此,而且由于程序必须为我的任务执行50次不同的时间,这是有问题的

while (bag.size() > 1)
{
    int grab1 = rn.nextInt(bag.size());
    int grab2 = rn.nextInt(bag.size());

    boolean place1 = bag.get(grab1).getColor();
    boolean place2 = bag.get(grab2).getColor();

    if (place1 && place2)
    {
        bag.remove(grab2);
    }

    if (place1 && !place2)
    {
        bag.remove(grab1);
    }

    if (!place1 && place2)
    {
        bag.remove(grab2);
    }

    if(!place1 && !place2)
    {
        bag.remove(grab1);
        bag.remove(grab2); //This line will give me an Out of Bounds Exception when the size and the index are the same
        bag.add(new Bean());
    }
}
我也尝试在这里添加-1,但它偶尔会给我索引-1的越界异常情况。

试试这个:

public Bean getLastElement(List<Bean> myList) {
    return myList.get(myList.size() - 1);
}
公共Bean getLastElement(列表myList){ 返回myList.get(myList.size()-1); } 试试这个:

public Bean getLastElement(List<Bean> myList) {
    return myList.get(myList.size() - 1);
}
公共Bean getLastElement(列表myList){ 返回myList.get(myList.size()-1); }
索引计数从0开始,因此如果array.size()返回5,则4是最后一项

((Bean)bag.get(bag.size()-1))

索引计数从0开始,因此如果array.size()返回5,则4是最后一项

((Bean)bag.get(bag.size()-1))

集合具有基于0的索引,因此最后一个元素是
size-1
。当集合为空时,您需要添加一个保护。

集合具有基于0的索引,因此最后一个元素是
size-1
。当集合为空时,您需要添加一个保护。

您需要调用
getSize()-1
,因为
列表是0索引的

例如,5个大小的
列表中的第一个索引是
0
,最后一个索引是
4

在尝试此操作之前,还应通过调用
isEmpty()
检查列表是否为空

示例

// assuming getColor weirdly returns boolean
if (bag != null && !bag.isEmpty() && ((Bean)bag.get(bag.size() - 1)).getColor()) {
   blackCounter++;
}
else {
   whiteCounter++;
}

您需要调用
getSize()-1
,因为
列表的索引为0

例如,5个大小的
列表中的第一个索引是
0
,最后一个索引是
4

在尝试此操作之前,还应通过调用
isEmpty()
检查列表是否为空

示例

// assuming getColor weirdly returns boolean
if (bag != null && !bag.isEmpty() && ((Bean)bag.get(bag.size() - 1)).getColor()) {
   blackCounter++;
}
else {
   whiteCounter++;
}

您能提供完整的代码段而不仅仅是条件吗?提示:大小为N的数组的第一个索引是什么?最后一个索引是什么?能否提供整个代码段而不仅仅是条件索引?提示:大小为N的数组的第一个索引是什么?最后一个索引是什么?