[英]How to pull data moving backwards in a java ArrayList
我正在尝试使其能够将数据写入ArrayList以跟踪随机整数,然后将具有一个上一个按钮,该按钮将返回到最后一个结果(这只是测试该代码,这不是该项目的完整代码) )尝试获取int arraySize并将其减去1并重新打印数据时,出现错误。 任何想法,为什么会发生这种情况,或如何以另一种方式完成任务。
int lenth = 10;
ArrayList<Integer> list = new ArrayList<Integer>();
int arraySize = list.size();
Random random = new Random();
int newRandom = random.nextInt(lenth);
list.add(newRandom);
newRandom = random.nextInt(lenth);
list.add(newRandom);
System.out.println(list.get(arraySize));
arraySize--;
System.out.println(list.get(arraySize));
这也是我得到的错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.elementData(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at test.C_MainActivity.main(C_MainActivity.java:22)
在将任何内容添加到列表之前,您要设置arraySize。 arraySize的值将始终为0,因为您仅在开始时进行了设置。 当您调用arraySize--时,arraySize现在为-1,而当您调用list.get(arraySize)时,您将在请求索引-1时获得索引超出范围的异常。
看来您的目标是将值放入一个集合中,然后将它们出队。 例如, LinkedList
与其push()
和pop()
方法更合适。
无论如何,您不应该通过外部变量来跟踪ArrayList
的大小。 在ArrayList
已经为您提供了此类数据,因此您只需查询列表即可知道其大小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.