在不打印null的情况下打印出数组中的字符串

时间:2014-02-19 06:33:09

标签: java arrays

当我运行我的方法打印出数组时,它会给我一个NullPointerException,我不知道如何让它只打印我想要的东西。假设我希望Array [0]为“Sally”而Array [3]为“Jeff”,我希望它打印出0,Sally 3,Jeff。虽然只留下阵列的所有空槽。

这是我的代码:

public void printAll()
{       
    for(int i = 0; i <= 10; i++)
    {
        if(seats[i].equals(null))
        {
            System.out.print(i + " , " + seats[i] + "\n");              
        }

    }
}

任何帮助都会非常感激,如果我太模糊,我可以回复更多细节。

6 个答案:

答案 0 :(得分:1)

你需要:

if (seats[i] != null)

使用equals会导致取消引用,完全您要避免的内容。

答案 1 :(得分:1)

你不应该使用:

if(seats[i].equals(null))

该条件本身会抛出NPE。你应该使用:

if(seats[i] != null)

答案 2 :(得分:0)

if(seats[i].equals(null))更改为if(seats[i] != null)if(seats[i] == null)以避免NPE。

因为如果seats[i]null,则无法在null引用上调用方法。

答案 3 :(得分:0)

您可能希望使用以下内容:(您正在检查对象的相等性,而不是数组项是否为null。

public void printAll()
{   
...
    if (seats != null) {
        for (int i=0; i < seats.size(); i++) {
            if (seats[i] != null) {
                System.out.println(i + ", " + seats[i]);  
            }
        }
    }  

}

答案 4 :(得分:0)

if(seats[i].equals(null)) {
  System.out.print(i + " , " + seats[i] + "\n");              
}

这导致空指针异常,因为seats[i]等于null。如果有空对象,则无法引用它。完全没有。这是合乎逻辑的,因为如果你什么都没有,那你就不能问它有什么。

要解决此问题,检查某些内容是否等于null的最佳方法是转到if(Object == null),如果它不是null,那么if(Object != null)。通过您可能拥有的任何代码,这些都很常见。

贾罗德。

答案 5 :(得分:0)

public static void printAll(){

  String[] seats={"Jerry","chen","Jack"};
  for(int i = 0; i <seats.length; i++)
  {

if(!seats[i].equals(null))
    {
        System.out.print(i + " , " + seats[i] + "\n");              
    }  

}