-2

当我使用这两种方法运行我的程序时,我得到了一个空指针异常:

public static String getType(int x)
{
    Contact_Type Type;
    String strType = "";

    Type = AddyBook.get(x).getContactType();
    strType = Type.toString ( );
    return strType;
}

public static String displayByType(String type)
{
    int i = 0;
    String strTypeList = "";

    if(type.equals(null))
        strTypeList = "What?What?What?LOLOLOLOLOLnopechucktesta";
    while(i < AddyBook.size())
    {
        if(getType(i).equalsIgnoreCase(type))
        {
            strTypeList += getType(i);
            strTypeList += "\n";
        }
        i++;
    }
    return strTypeList;
}

我被指出的线条是

strType = Type.toString ( );

if(getType(i).equalsIgnoreCase(type))

除了它们正在操作的变量之外,我还在其他相同的方法中遇到异常。

我的问题是,在我的驱动程序类中,我直接测试了“getType”方法,它工作正常。然后,在“displayByType”方法中,我什至说“如果 Type 为 null,请执行此操作”,但它仍然只是抛出异常。我不知道为什么,但我觉得这可能非常简单明了;我一直在研究这个太久了,现在看不到它。:/

编辑1: Type = AddyBook.get(x) 的内容是一个对象, .getContactType() 的结果是一个枚举。

4

1 回答 1

0

我相信这条线是错误的:

if(type.equals(null))
    strTypeList = "What?What?What?LOLOLOLOLOLnopechucktesta";

它应该是:

if(type == null)
    strTypeList = "What?What?What?LOLOLOLOLOLnopechucktesta";

没有看到这里方法调用的内容:

Type = AddyBook.get(x).getContactType();

这将很难调试,但如果我猜测它会是方法“getContactType()”返回null。

编辑:

尝试解开调用:

代替:

Type = AddyBook.get(x).getContactType();
strType = Type.toString ( );

尝试:

Entry entry; // I don't actually know what .get() returns
entry = AddyBook.get(x);
if (entry == null)
    throw new RuntimeException("entry is null at "+x+" book size="+AddyBook.size());

Type type = entry.getContactType();
if (type == null)
    throw new RuntimeException("type is null from entry="+entry.toString());

strType = Type.toString ( );
于 2013-10-09T01:35:47.350 回答