按列表替换数组

时间:2010-10-16 23:55:12

标签: java

我正在尝试将我的数组变成一个arraylist,我无法修改我的这部分课程。我没有完整的课程,但这部分内容。

   public boolean add(String title, int productID){//true or false statement

        if ( numberOfRecords == list.length() ){  // I get an error here at list.length()
    return false;

}
    else
    { list [numberOfRecords] = new MyArrayList(title, productID);// I get an error
    numberOfRecords++;
    return true;
    }

}

4 个答案:

答案 0 :(得分:3)

从您提供的代码段中无法分辨出来。有太多变量未知。但Paul Tomblin是正确的:List没有length()方法,但是array有一个length属性。哪一个描述了你的列表变量?

编译器问题几乎不应成为问题的一部分。当编译器给你一个消息时,它可能会给你足够的信息,通过一些研究来弄清楚它。

当您发布询问编译问题的问题时,它表示您不愿意投入足够的精力或精力为自己解决问题。

这很正常。了解您的代码如何比较:

package movie;

/**
 * ShoppingCart
 * User: Michael
 * Date: 10/16/10
 * Time: 8:07 PM
 */
public class ShoppingCart
{
    private Movie[] list;
    private int numberOfRecords;

    public static void main(String[] args)
    {
        ShoppingCart cart = new ShoppingCart(args.length);
        for (int i = 0; i < args.length; ++i)
        {
            boolean success = cart.add(args[i], i);
            System.out.println("Movie '" + args[i] + (success ? "' was " : " was not ") + "added successfully");
        }
        boolean success = cart.add("Gladiator", args.length+1);
        System.out.println("Movie 'Gladiator'" + (success ? " was " : " was not ") + "added successfully");

        System.out.println(cart);
    }

    public ShoppingCart(int numberOfRecords)
    {
        this.numberOfRecords = 0;
        this.list = new Movie[numberOfRecords];
     }

    @Override
    public String toString()
    {
        StringBuilder builder = new StringBuilder();

        String newline = System.getProperty("line.separator");
        for (Movie movie : this.list)
        {
            builder.append(movie).append(newline);
        }

        return builder.toString();
    }

    public boolean add(String title, int productId)
    {
        if (numberOfRecords == list.length)
        {
            return false;
        }
        else
        {
            list[numberOfRecords] = new Movie(productId, title);
            numberOfRecords++;
            return true;
        }


    }
}

class Movie
{
    private int id;
    private String title;

    Movie(int id, String title)
    {
        this.id = id;
        this.title = title;
    }

    public String getTitle()
    {
        return title;
    }

    @Override
    public String toString()
    {
        return "Movie{" +
               "id=" + id +
               ", title='" + title + '\'' +
               '}';
    }
}

答案 1 :(得分:1)

要调用list [numberOfRecords],list必须是数组实例。

Hovewer,

if ( numberOfRecords == list.length() ){  // I get an error here at list.length()
    return false;
}

代码的这一部分说list是一个java.util.List实现实例。

你应该修改

list [numberOfRecords] = new Movie(title, productID);

本节内容:

list.add(new Movie(title, productID));

答案 2 :(得分:1)

要使用List代替数组,您必须进行以下更改:

list.length()list.size()

list [numberOfRecords] list.add(new Movie(title, productID))

答案 3 :(得分:1)

您似乎正在实施自己的ArrayList。因此list是数组,numberOfRecords是数组中存在和填充的元素数。

如果这是正确的,您不应该调用您的数组list,因为该名称具有误导性。更好的名称是elements

而且,正如其他人所说,数组没有方法length,而是一个字段。所以你应该写elements.length而不是elements.length()