剥离输入导致空指针

时间:2014-02-01 20:38:20

标签: java nullpointerexception palindrome

我正在尝试创建一个方法来剥离一串空格和标点符号,以检查它是否是回文。当填充剥离字符的char数组时,我得到一个空指针异常。对我来说这很有道理,我只用字母或数字填充相同长度的数组。如果有剩余的字符,那么我用一个空格填充它们(后来被剥去修剪)。没有char [] strippedInput = null;我得到的变量可能尚未初始化。有了它,我得到空指针异常。我画了一个简单的图表,当我输入“if,then”时,剥离的数组会发生什么。一切似乎都匹配起来。对于strippedInput的每个数组索引似乎都有一个值,但netbeans告诉我某些东西是null。

    static boolean palindromeCheckC(String inputString)
    {
        boolean isPalin2 = false;

        char[] inChars = inputString.toCharArray();

        char[] strippedInput = null;

        int offsetIndex = 0; 

        for (int i = 0; i < inputString.length(); i++)
        {
            if ((Character.isLetter(inChars[i]) || Character.isDigit(inChars[i]
                )) == true)
            {
                strippedInput[i-offsetIndex] = inChars[i];
            }
            else offsetIndex++;
        }
        for (int i = inputString.length()- offsetIndex; i < inputString.length(); i++)
        {
            strippedInput[i] = ' ';
        }
        System.out.println(strippedInput);

        //to string
        //reverse
        //compare to    if 0 => isPalin2 = true


        return isPalin2;
     }

1 个答案:

答案 0 :(得分:0)

问题是,不是初始化数组,而是将其设置为null。尝试更改:

char[] strippedInput = null;

 char[] strippedInput = new char[inputString.length()];

我了解strippedInput可能包含的字符数少于inputString中的字符数。但是,据我所知,您可能需要在剥离的数组中使用相同数量的字符。如果您不需要所有这些,只需在数据的末尾写一个空字符,它就可以正常工作/打印。无论如何,这将解决您的NullPointerException