我正在尝试创建一个方法来剥离一串空格和标点符号,以检查它是否是回文。当填充剥离字符的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;
}
答案 0 :(得分:0)
问题是,不是初始化数组,而是将其设置为null。尝试更改:
char[] strippedInput = null;
到
char[] strippedInput = new char[inputString.length()];
我了解strippedInput
可能包含的字符数少于inputString
中的字符数。但是,据我所知,您可能需要在剥离的数组中使用相同数量的字符。如果您不需要所有这些,只需在数据的末尾写一个空字符,它就可以正常工作/打印。无论如何,这将解决您的NullPointerException
。