Java 如何运行addToEnd方法?
这是我的第一个类MyArrayList,其中包含我尝试运行的addToEnd方法Java 如何运行addToEnd方法?,java,arrays,class,Java,Arrays,Class,这是我的第一个类MyArrayList,其中包含我尝试运行的addToEnd方法 public class MyArrayList <E extends Comparable<E>>implements List<E> { private E[] data; private int size = 0; private void reallocate(){ size = 2 * size; data =
public class MyArrayList <E extends Comparable<E>>implements List<E> {
private E[] data;
private int size = 0;
private void reallocate(){
size = 2 * size;
data = Arrays.copyOf(data, size);
}
public boolean addToEnd(E e) {
if (size == data.length){
reallocate();
}
data[size++] = e;
System.out.println();
return true;
}
公共类MyArrayList实现列表{
私人电子数据;
私有整数大小=0;
私有void重新分配(){
尺寸=2*尺寸;
数据=数组.copyOf(数据,大小);
}
公共布尔addToEnd(E){
if(size==data.length){
重新分配();
}
数据[size++]=e;
System.out.println();
返回true;
}
我的第二个类,ArraySorterTester,是我试图调用addToEnd方法的地方,但由于某种原因,它无法工作,我不断地得到一个错误
public class ArraySorterTester {
public static void main(String [] args){
Integer[] test = new Integer[] {1, 2, 4, 6, 8 };
MyArrayList<Integer> inserter = new MyArrayList<Integer>();
boolean sorted = true;
inserter.addToEnd(10);
for (int k = 0; k < test.length; k++) {
System.out.print(test[k] + " ");
}
}
公共类ArraySortester{
公共静态void main(字符串[]args){
整数[]测试=新整数[]{1,2,4,6,8};
MyArrayList插入器=新的MyArrayList();
布尔排序=真;
插入器。添加到结束(10);
对于(int k=0;k
您尚未初始化private E[]data
,因此在addToEnd
中访问数据.length
将导致错误
public class ArraySorterTester {
public static void main(String [] args){
Integer[] test = new Integer[] {1, 2, 4, 6, 8 };
MyArrayList<Integer> inserter = new MyArrayList<Integer>();
boolean sorted = true;
inserter.addToEnd(10);
for (int k = 0; k < test.length; k++) {
System.out.print(test[k] + " ");
}
}
尝试为
MyArrayList
创建一个构造函数,并使用new
在那里初始化private[]data
。记住最初将size
设置为与data.length
相同。在MyArrayList.addToEnd(MyArrayList.java:42)arraysortester.main(arraysortester.java:25)中会出现什么错误它告诉我哪些行是错误的,但我不知道如何修复它…我认为这可能与我如何调用它有关。或者可能是我写错了这行代码MyArrayList inserter=new MyArrayList();但我真的不知道我做错了什么,我不知道该怎么做,但我明白你的意思,因为我还没有初始化私有的E[]数据。@HirokiDrake阅读了构造函数以及如何在Java中初始化数组。好吧,我会做一些类似“public MyArrayList(Comparable data){data=new E(new int[]{10,20,30,40,50});“但是我仍然很困惑,有没有一种方法可以将数据放入构造函数中,但在ArraySorterTester类中声明数组?@HirokiDrake是的,类似这样:data=new E[size];
如果你想做类似于MyArrayList ints=new MyArrayList(1,2,3,4,5)的事情;
初始化数据
包含{1,2,3,4,5}
读取varargs。