Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何运行addToEnd方法?_Java_Arrays_Class - Fatal编程技术网

Java 如何运行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 =

这是我的第一个类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 = 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。