Java ArrayList长度错误

标签 java arrays

下面的 Have 方法返回所有兰博基尼对象的数组,这些对象的马力范围在作为参数传递的范围内。当我尝试编译错误时,Lamborghini.length 找不到符号 - 可变长度。 length 不是 ArrayList 的一部分吗?

public Lamborghini[] getCarsWithHorsepowerRange(double lowHP, double highHP)
{

    int horsePower = 0;

    for(int i = 0; i < Lamborghini.length; i++)
    {
        if(Lamborghini[i] != null)
        {
            if((Lamborghini[i].getHorsePower() >= lowHP) &&
            ((Lamborghini[i].getHorsePower() <= highHP)))
            {
                horsePower++;
            }
        }

最佳答案

您的代码存在一些问题。首先,您尝试使用 Lamborghini引用ArrayList你声明,当 Lamborghini只是其中存储的对象类型。相反,您应该使用变量名称,在本例中 inventory ,引用 ArrayList 的实例您创建的。

其次,你很困惑 Array s ArrayList s ,它们是不同的类型,并且有不同的方式来访问它们的长度和内容。由于您使用的是 ArrayList ,您需要使用size()获取其长度的方法,以及 .get(int)访问元素的方法。

因此将您的代码更改为以下内容以纠正这些错误:

public Lamborghini[] getCarsWithHorsepowerRange(double lowHP, double highHP){
    int horsePower = 0;

    for(int i = 0; i < inventory.size(); i++){
        if(inventory.get(i) != null){
            if((inventory.get(i).getHorsePower() >= lowHP) &&
               (inventory.get(i).getHorsePower() <= highHP)){
                horsePower++;
            }
        }
    }
}

这仍然会有问题,因为它的返回类型为 Lamborghini[] ( Lamborghini 的数组),永远不会返回。我不知道意图是什么,但是如果你不需要返回值,你可以将类型更改为 void 。或者您可以将类型更改为 ArrayList<Lamborghini>并返回inventory目的。否则,您需要创建一个新数组并填充它:

Lamborghini[] result = new Lamborghini[inventory.size()];
for(int i = 0; i < inventory.size(); i++){
    result[i] = inventory.get(i);
}
return result;

关于Java ArrayList长度错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34114291/

相关文章:

java - java中的分层绘图

java - jasperreport生成的条形码无法扫描

java - 从 JobIntentService 调用 Activity 方法

arrays - 如何将复合类型的数组从 nodejs 传递到 postgresql 函数?

Javascript 过滤器未返回预期的 int 值

php - 搜索多维数组中的列值

java - 对 Java/Wicket 服务器的 jQuery AJAX 调用在 IE 中没有响应 (6/7/8)

javascript - 使用 JavaScript 拆分逗号分隔的字符串但忽略分号之间的逗号

c - 这个计算每个元音出现次数的 C 程序有什么问题?

java - DefaultListModel.clear 错误