Java构造函数和空指针异常

时间:2013-01-28 05:01:28

标签: java constructor nullpointerexception

我正在使用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的构造函数,那么构建在此之后是成功的,但是我需要稍后构建协议,所以它仍有问题。

我不允许在另一个构造函数中调用构造函数吗?任何人都对可能发生的事情有任何想法?

如果您需要更多说明,请告诉我们!

2 个答案:

答案 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';  
   ...  
   ...

}