gpt4 book ai didi

java - 在java中实现哈希表时出现NullPointerException错误

转载 作者:行者123 更新时间:2023-12-01 07:26:50 24 4
gpt4 key购买 nike

我正在通过java实现哈希表。当我实现以下代码时,我收到 NullPointer Exception 错误,但如果我将类 HashTable 中的 void put(int key, int value) 中的 else 语句替换为语句 kv[key]=new KeyValue(key,value);有用!有人可以解释为什么会发生这种情况吗?请帮忙!

public class KeyValue {
int key;
int value;

KeyValue(int k, int v)
{
key = k;
value = v;
}
public int getKey(){
return key;
}

public int getValue()
{
return value;
}

public void put(int k, int v)
{
key = k;
value = v;
}

}

public class HashTable{

KeyValue[] kv;

HashTable(){
kv = new KeyValue[4];
for (int i=0; i<4 ; i++)
{ kv[i]=null;

}
}

void put(int key, int value)
{
if((kv[key]!=null) || (key<0 && key>=4))
{
;
}
else
{
kv[key].put(key,value);
}
}

int get(int key)
{
int value;

value=kv[key].getValue();


return value;
}

public static void main(String[] a){

HashTable h = new HashTable();
h.put(1,2);

System.out.println(h.get(1));

}

}

最佳答案

您正在使用 null 初始化 kv[key]。因此,如果您执行kv[key].callSomeMethod,您会得到一个NullPointerException,因为没有对象可以调用其方法。

您可以像 Peter Radar 所说的那样初始化您的 KeyValues,或者使用 KeyValue 的默认构造函数在 HashTable 的构造函数中进行初始化。

    HashTable(){
kv = new KeyValue[4];
for (int i=0; i<4 ; i++)
{
kv[i]=new KeyValue();
}
}

现在,KeyValue 类型的对象存储在 kv[i] 中,您可以使用它的方法。

关于java - 在java中实现哈希表时出现NullPointerException错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23080751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com