当我运行我的方法打印出数组时,它会给我一个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");
}
}
}
任何帮助都会非常感激,如果我太模糊,我可以回复更多细节。
答案 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");
}
}