2013-02-07 43 views
0

我有以下代码片段。Java数组中的某些字段为空,处理这些

说明: 我有一个名为result的数组。 此数组包含不同的字符串属性,如“城市”,“国家/地区名称”和“IATA”。

使用for循环,我尝试访问和检索所有上述字段。

我现在的问题是:虽然“城市”和“countryName”总是有一个值,但“IATA”有时没有值,因此返回“null”,一旦我访问了一个nullPointerException空“国际航空运输协会”。

我尝试这样做:

if(entry.getIATA().equals(null)) { 


        } else { 
         startIATA[count] = entry.getIATA(); 
        } 

但是,如果这个条件没有工作,我试图访问一个字段,为空。 有没有人知道我可以如何解决这个问题?

下面是相关的代码片段:

private String[] startIATA = new String[200]; //That is more than long enough 

... 

for (int count = 0; count < result.getAirports().length(); count++) { 
        AirportsEntry entry = result.getAirports().get(count); 

        // Block for StartAirport 

        HorizontalPanel hp = new HorizontalPanel(); 
        hp.setSpacing(5); 
        hp.add(new Label(entry.getCity())); 
        hp.add(new Label(entry.getCountryName())); 
        hp.add(new Label(entry.getIATA())); 
        GWT.log("IATA: " + entry.getIATA()); 

        if(entry.getIATA().equals(null)) { 


        } else { 
         startIATA[count] = entry.getIATA(); 
        } 


        startAirportVP.add(hp); 

       } 

非常感谢您的时间和您的帮助!

+0

我不认为你可以做空等于可以吗?你不需要做一个“==”比较。 –

+0

这是因为“.equals”试图调用一个对象的方法(这就是“。”意思是:调用方法)。但是,因为你的对象是空的,所以它是错误的,因为你不能在不存在的东西上调用一个方法。相反,您可以使用“==”来检查对象是否为空。 –

+0

谢谢你的回答 –

回答

3

在访问对象的属性之前执行简单的空检查。

if(entry != null && entry.getIATA() != null){ 
    startIATA[count] = entry.getIATA(); 
} 
+0

非常感谢你为这个超快的答案!它工作就像它应该:) –

+0

@ user2039697很高兴我能帮上忙。 –

0

您不能使用equals方法来检查null。使用==

if (entry.getIATA() == null) 
0

使用这样的:如果 (entry.getIATA()!= NULL)

相关问题