gpt4 book ai didi

Java 不识别 ArrayList 中的元素?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:38:44 25 4
gpt4 key购买 nike

我有一个程序,我在其中创建一个数组列表来保存一些 cab 对象。我不断收到一条错误消息,我从消息中得到的是 java 无法识别 arraylist 中有对象。这是我遇到的错误。

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 20, Size: 20
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at edu.Tridenttech.MartiC.app.CabOrginazer.main(CabOrginazer.java:48)

这是我要开始工作的代码

public class CabOrginazer {

private static List<CabProperties> cabs = new ArrayList<CabProperties>();
private static int count = 0;
private static boolean found = false;


public void cabOrginazer()
{

}

public static void main(String[] args) {
// TODO Auto-generated method stub
CabRecordReaper reaper = new CabRecordReaper("C:/CabRecords/September.txt");
CabProperties cabNum;

for(int i = 0; i < 20; i++)
{
cabNum = new CabProperties();
cabs.add(cabNum);
}
while(reaper.hasMoreRecords())
{
CabRecord file = reaper.getNextRecord();
for(int j = 0; j < cabs.size(); j++)
{
if(cabs.get(j).getCabID() == file.getCabId())
{
found = true;
cabs.get(j).setTypeAndValue(file.getType(), file.getValue(), file.getPerGallonCost());
cabs.get(j).setDate(file.getDateString());
break;
}

}

if(found == false)
{
cabs.get(count).setCabId(file.getCabId());
count++;
}
/*for(CabProperties taxi : cabs)
{
if(taxi.getCabID() == file.getCabId())
{
found = true;
taxi.setTypeAndValue(file.getType(), file.getValue(), file.getPerGallonCost());
taxi.setDate(file.getDateString());
break;
}


}*/

}


for(CabProperties taxi : cabs)
{
System.out.print("cab ID: " + taxi.getCabID());
System.out.print("\tGross earning: " + taxi.getGrossEarn());
System.out.print("\tTotal Gas Cost: " + taxi.getGasCost());
System.out.print("\tTotal Service Cost: " + taxi.getServiceCost());
System.out.println();

}


}

}

第 48 行 是 if 语句的内部 cabs.get(count).setCabId(file.getCabId());我对 Java 知之甚少。 Java 应该知道 cabs 中有元素,我应该能够设置 cab 的 id。是什么导致 Java 无法识别数组列表已填充?

最佳答案

列表填充项目count 处的元素。查看异常:列表中有 20 个元素,因此有效索引为 0 到 19(含)。您要求记录 20(即第 21 条记录)。那不存在。

听起来你的 block 应该是这样的:

if (!found)
{
CabProperties properties = new CabProperties();
properties.setCabId(file.getCabId());
// Probably set more stuff
cabs.add(properties);
}

您很可能能够完全摆脱 count 变量 - 以及具有虚拟属性的列表的初始填充。从一开始就填充这样的列表是非常奇怪的 - 这通常是您使用具有固定大小的数组 所做的事情。使用 List(例如 ArrayList)的主要好处之一是它的大小是动态的。

关于Java 不识别 ArrayList 中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26142018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com