繁体   English   中英

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

[英]Printing out strings in an array while not printing the null, Java

当我运行我的方法打印出数组时,它会给我一个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");              
        }

    }
}

任何帮助将不胜感激,如果我太模糊,我可以回复更多的细节。

你需要:

if (seats[i] != null)

使用equals将导致取消引用,这正是您要避免的。

你不应该使用:

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

这种情况本身会引发NPE 你应该使用:

if(seats[i] != null)

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

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

您可能希望使用以下内容:(您正在检查对象的相等性,而不是数组项是否为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]);  
            }
        }
    }  

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

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

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

贾罗德。

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");              
    }  

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM