0

Strings我有一个被调用的数组letters。当我尝试执行以下代码行时,我得到一个NullPointerException.

if(letters[j].equals(tmpst))

哪里j是任意索引小于长度letters

tmpst是一个这样定义的字符串:

char myChar = theWord.charAt(i);
String tmpst = String.valueOf(myChar);

其中theWord是长度大于 4 的任意字符串。

完整的代码是:

for (int i = 0; i < theWord.length(); i++) { 
        for (int j = 0; j < letters.length; j++) { 

            char myChar = theWord.charAt(i);
            String tmpst = String.valueOf(myChar);

            if(letters[j].equals(tmpst)) { 
                System.out.println("YOU DIDIT!!! :D");
                newWord = newWord + theWord.charAt(i);
            }

        }

有人可以看到我做错了什么吗?

谢谢。

4

4 回答 4

1

您的数组似乎包含一些空引用。你可以用Arrays.toString(letters)它来看看它是否属实。

如果您希望即使您的数组包含空值,您的比较仍然有效,您应该将代码更改为如下所示:

if(tmpst.equals(letters[j]))
于 2012-10-11T03:58:37.683 回答
0

如果表达式letters.length评估没有问题,letters[j]则为空,这是唯一的可能性。您不能在空引用上调用方法。

如果它是这样的,你应该写一些考虑这种情况的东西:

if (letters[j] != null && letters[j].equals(tmpst)) {
于 2012-10-11T04:02:29.553 回答
0

您需要了解其中的区别。
例如,有一个String myString.NowmyString == null和 myString.equals("") 是两个不同的东西。
在使用之前myString.equals(""),您必须确保您的字符串已初始化且不为空。所以,你的这个错误是因为你的字符串对象在任何索引处都没有初始化。
尝试通过使用来检查它myString == null
随时询问您是否有任何歧义:)

于 2012-10-11T04:05:53.403 回答
0

先检查!=null,然后使用.equals()方法.....因为null不是字符串。所以不能使用用户.equals()方法

于 2013-04-15T07:03:58.907 回答