我正在使用java,当我使用自定义构造函数时遇到了一个问题。
当我开始我的程序时,主文件包含这样一行:
Word input = new Word(word);
word的构造函数如下所示:
public Word(String s){
wordArray = s.toCharArray();
protocol = new Protocol(wordArray.length);
}
协议看起来像这样:
public Protocol(int length)
{
letterList[0] = 'a';
letterList[1] = 'b';
letterList[2] = 'c';
letterList[3] = 'd';
letterList[4] = 'e';
letterList[5] = 'f';
letterList[6] = 'g';
letterList[7] = 'h';
letterList[8] = 'i';
letterList[9] = 'j';
letterList[10] = 'k';
letterList[11] = 'l';
letterList[12] = 'm';
letterList[13] = 'n';
letterList[14] = 'o';
letterList[15] = 'p';
letterList[16] = 'q';
letterList[17] = 'r';
letterList[18] = 's';
letterList[19] = 't';
letterList[20] = 'u';
letterList[21] = 'v';
letterList[22] = 'w';
letterList[23] = 'x';
letterList[24] = 'y';
letterList[25] = 'z';
wordLength = length;
for(int i=0;i<wordLength*2-1;i++)
{
display[i] = '_';
i++;
display[i] = ' ';
}
}
我的主文件中的NullPointerException
位于word
的构建位置,然后是protocol
。
我已经对代码进行了实验,并注意到如果我没有在protocol
内调用word
的构造函数,那么构建在此之后是成功的,但是我需要稍后构建协议,所以它仍有问题。
我不允许在另一个构造函数中调用构造函数吗?任何人都对可能发生的事情有任何想法?
如果您需要更多说明,请告诉我们!
答案 0 :(得分:5)
我不允许在另一个构造函数中调用构造函数吗?
不,你肯定允许这样做。
任何人对可能发生的事情都有任何想法?
显然,word
在传递给此行的null
构造函数时为Word
:
Word input = new Word(word);
答案 1 :(得分:3)
问题可能是因为您可能没有初始化letterList
数组,因此请在使用之前先尝试初始化它。
public Protocol(int length)
{
letterList = new char[26];
letterList[0] = 'a';
letterList[1] = 'b';
letterList[2] = 'c';
...
...
}