我正在尝试将我的数组变成一个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;
}
}
答案 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()
。