-3

我需要创建一个数组并从数组末尾添加和删除。
问题是我被要求构建 Arraylist 构造函数来初始化数组“列表”,但我得到了错误我应该做什么??!!!

01. 创建 ArrayList(‐1) 的实例。列表大小将变为 10
02。添加 15 个项目。只会添加 10 个
03. 这是列表
ACEGIKMOQS
04. 调用 delete 3 次
05. 这是列表
ACEGIKM
06. 调用 expandByTen
07. 这是列表
ACEGIKM
08. 添加 15 个项目。
09. 这是列表
ACEGIKMBDFHJLNPRTVXZ

import java.util.ArrayList;   

public class Main{

    /**
     * @param args
     */

     // create an array list

        char []list;
  int length;

  ArrayList(int maxSize)
   {
       if (maxSize<=0)
          length=10;
       else
           length=maxSize;

   }

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        ArrayList arrayList;
        System.out.println("01. Creating an instance of ArrayList(‐1). The list size will become 10");
        arrayList = new ArrayList(‐1);
        System.out.println("02. Adding 15 items. Only 10 will be added");
        for (int i = 65; i < 96; i += 2) {
           arrayList.insertEnd((char) i);
        }
        System.out.println("03. Here is the list");
        arrayList.print();
        System.out.println("04. Calling delete three times");
        arrayList.deleteEnd();
        arrayList.deleteEnd();
        arrayList.deleteEnd();
        System.out.println("05. Here is the list");
        arrayList.print();
        System.out.println("06. Calling expandByTen");
        arrayList.expandByTen();
        System.out.println("07. Here is the list");
        arrayList.print();
        System.out.println("08. Adding 15 items.");
        for (int i = 66; i `enter code here`< 97; i += 2) {
           arrayList.insertEnd((char) i);
        }
        System.out.println("09. Here is the list");
        arrayList.print();
      }
    }
4

3 回答 3

2

Arraylist 动态分配大小,在向其中添加元素时增加大小。. 所以你可以像下面这样创建arraylist。

 ArrayList arrayList= new ArrayList(10);

或者

 ArrayList arrayList= new ArrayList();

您不能使用 size 创建 ArrayList -1。替换new ArrayList(-1);new ArrayList();

从您的程序中删除以下无用的代码。它根本不起作用

 ArrayList(int maxSize)
   {
       if (maxSize<=0)
          length=10;
       else
           length=maxSize;

   }

没有方法print();, deleteEnd();,insertEnd((char) i);Arraylist

于 2013-10-25T12:38:02.723 回答
2

该类ArrayList已经存在...您不需要编写这样的构造函数:ArrayList(int maxSize)

ArrayList像您在方法中所做的那样实例化您的main

List myList = new ArrayList(); //don't add a -1 parameter

然后,巧妙地使用Java API中的 ArrayList 方法。

myList.add(...);
myList.remove(...);
myList.size();
于 2013-10-25T12:31:52.720 回答
0
  • 我看不到您在哪里创建char数组的新实例。对它的任何引用都会生成一个NullPointerException
  • 我没有看到ArrayList.insertEnd(..)会产生编译错误的声明或实现,所以我假设您没有在此处包含它(deleteEnd等等expandByTen)。
  • 假设您正在char[]使用构造函数中定义的长度在某处创建实例,如果构造函数参数小于或等于零,则将大小设置为等于 10。在该main方法中,您实例化ArrayList一个大小为 -1 的实例,它应该(基于您提供的少量内容)创建(某处)list大小为 10 的字段实例。但是,您的第一个循环尝试使15 次迭代,IndexOutOfBounds如果您没有在insertEnd方法中进行适当的边界检查,这将在运行时生成异常。

我要出去玩了,猜你是把这个当作学校的作业吗?如果没有,请注意 Javajava.util.ArrayListjava.util包中包含大量容器,包括 .

于 2013-10-25T12:50:06.047 回答