当我尝试将值添加到Array时java.lang.NullPointerException

NeuTronas

我的任务是制作自己的动态数组,而无需ArrayList在Java中使用任何s或其他预先创建的数组类。Exception in thread "main" java.lang.NullPointerException当我尝试添加我的对象时(例如,它是Integer),我得到一个错误。

Dinaminis<Integer> array = new Dinaminis<>();
array.ideti(5);

我的Dinaminis课看起来像这样:

public class Dinaminis<T> implements DArray<T> 
{    
    private Object[] array;
    private int kiek;
    private Object[] temp;

    public Dinaminis() {
        array = new Object[10];
        kiek = 0;
    }

    @Override
    public void ideti(Object o) {
        if (array.length == kiek) {
            temp = new Object[kiek*2];
        }
        for (int i=1; i < kiek; i++){
            temp[i] = array[i];
        }
        array = temp;
        array[kiek] = o;
        kiek++;
    }
}

问题是,当我想使用“ ideti”方法时,我想检查数组是否已满,如果数组已满,则应创建一个双倍大小的数组。但是,即使在我的阵列已满之前,我也会收到错误消息。

艾略特·新鲜

我建议您将您存储array为您的泛型类型T我会通过到Class<T>Dinaminis构造函数,那么你可以使用Array.newInstance()另外,我更喜欢像这样使用System.arraycopy()和覆盖toString()

public class Dinaminis<T> implements DArray<T> {
    private T[] array;
    private int kiek;
    private Class<T> cls;

    public Dinaminis(Class<T> cls) {
        this.cls = cls;
        array = (T[]) Array.newInstance(cls, 10);
        kiek = 0;
    }

    @Override
    public void ideti(T o) {
        if (kiek == array.length) {
            T[] temp = (T[]) Array.newInstance(cls, array.length * 2);
            System.arraycopy(array, 0, temp, 0, array.length);
            array = temp;
        }
        array[kiek++] = o;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(String.format("len = %d [", array.length));
        for (int i = 0; i < kiek; i++) {
            if (i != 0) {
                sb.append(", ");
            }
            sb.append(array[i]);
        }
        sb.append("]");
        return sb.toString();
    }
}

然后你可以用类似的东西来测试它

public static void main(String[] args) {
    DArray<Integer> t = new Dinaminis<Integer>(Integer.class);
    for (int i = 0; i < 11; i++) {
        t.ideti(i);
    }
    System.out.println(t);
}

输出为

len = 20 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

显然len是出于教学原因将其添加到此输出中,并且在实际代码中,我可能不会显示它(也许在日志消息中除外)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

尝试将元素添加到循环链接列表时出现java.lang.NullPointerException

尝试在Android中将数据添加到类的对象时出现java.lang.NullPointerException

java.lang.NullPointerException?

当我尝试使按钮不可见时,java.lang.NullPointerException

我在尝试检查internetConnection时得到java.lang.NullPointerException?

JDBC:java.lang.NullPointerException

java.lang.NullPointerException :(片段)

java.lang.nullpointerexception错误

遇到java.lang.NullPointerException

getResourceAsStream 的 java.lang.NullPointerException

java.lang.NullPointerException错误?

java.lang.NullPointerException: uriString

Jmeter java.lang.NullPointerException

java.lang.NullPointerException出现

java.lang.NullPointerException OnItemClickListener

java.lang.NullPointerException错误

mainactivity-java.lang.NullPointerException

java.lang.NullPointerException错误

java.lang.NullPointerException PrintWriter

引起:java.lang.NullPointerException:

如何在将用户输入添加到MPandroidchart时防止java.lang.nullpointerexception

当我创建使用其他类的值的数组时,java.lang.NullPointerException

当我尝试在Vaadin View中初始化方法时,我得到java.lang.NullPointerException:null

布尔值的java.lang.NullPointerException

创建DiskFileItem时java.lang.NullPointerException

NullPointerException 当我尝试将对象从 jpa 存储库添加到列表时

尝试使用jdbc时出现java.lang.NullPointerException

Java/Selenium - java.lang.NullPointerException

java.lang.NullPointerException Andriod Studio Java